我目前正在测试Java SE的CDI 2.0(焊接)-我读到,不需要使用beans.xml,所以我尝试了一下:
你好类:
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
信息:WELD-000900:3.0.5(最终版)
Okt 10,2018 2:22:05 PM org.jboss.weld.bootstrap.WeldStartup startContainer
信息:WELD-000101:事务服务不可用。 @Inject UserTransaction的注入不可用。事务性观察者将被同步调用。
Okt 10,2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent
信息:WELD-ENV-002003:焊接SE容器5adc2948-acd7-423c-84dc-c1463534c309初始化
Okt 10,2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer关闭
信息:WELD-ENV-002001:焊接SE容器5adc2948-acd7-423c-84dc-c1463534c309已关闭
我想念什么?
提前致谢。
最佳答案
CDI容器工作正常。Transactional services not available
指出您不在事务管理器下运行,默认情况下,该事务管理器将(几乎)运行在应用程序服务器中。
关于java - Java SE和Weld?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52740430/