我目前正在测试 Java SE 的 CDI 2.0( Weld ) - 我读到,没有必要使用 beans.xml,所以我尝试了这个:
Hallo.class:
public class Hallo {
public String sayHallo() {
return "hallo";
}
}
然后我有一个 Test.class:
@ApplicationScoped
public class Test {
@Inject Hallo hallo;
public String sayHallo() {
return hallo.sayHallo() + " from Test";
}
}
最后我尝试使用 CDI:
public class Demo {
public static void main(String[] args) {
SeContainerInitializer initializer = SeContainerInitializer.newInstance();
/** disable discovery and register classes manually */
try (SeContainer container = initializer.disableDiscovery().addPackages(Demo.class).initialize()) {
Test test = container.select(Test.class).get();
test.sayHallo();
}
}
}
不幸的是,它不起作用。我收到此消息:
Okt 10, 2018 2:22:04 PM org.jboss.weld.bootstrap.WeldStartup INFO: WELD-000900: 3.0.5 (Final)
Okt 10, 2018 2:22:05 PM org.jboss.weld.bootstrap.WeldStartup startContainer INFO: WELD-000101: Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
Okt 10, 2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent INFO: WELD-ENV-002003: Weld SE container 5adc2948-acd7-423c-84dc-c1463534c309 initialized
Okt 10, 2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer shutdown INFO: WELD-ENV-002001: Weld SE container 5adc2948-acd7-423c-84dc-c1463534c309 shut down
我错过了什么?
提前致谢。
最佳答案
CDI 容器工作正常。
事务服务不可用
表示您没有在事务管理器下运行,而事务管理器(几乎)默认情况下在应用程序服务器内运行。
关于Java SE 和 Weld?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52740430/