我目前正在测试用于Java (焊缝)的CDI2.0--我读到,没有必要使用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();
}
}
}不幸的是,它不起作用。我收到这样的信息:
2018年2:22:04 org.jboss.weld.bootstrap.WeldStartup信息:焊缝-000900: 3.0.5 (最终) 2018年2:22:05 org.jboss.weld.bootstrap.WeldStartup startContainer信息:焊缝-000101:事务性服务不可用。注入@ Injection UserTransaction不可用。事务观察员将被同步调用。 2018年2:22:05 org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent信息:焊缝-ENV-002003:焊缝SE容器5adc2948-acd7-423c-84dc-c1463534c309初始化 2018年2:22:05 org.jboss.weld.environment.se.WeldContainer停工信息:焊缝-ENV-002001:焊缝SE容器5adc2948-acd7-423c-84dc-c1463534c309关闭
我遗漏了什么?
提前谢谢。
发布于 2018-10-11 14:34:11
CDI容器工作正常。
Transactional services not available声明您没有在事务管理器下运行,默认情况下,事务管理器在应用程序服务器中运行(几乎)。
https://stackoverflow.com/questions/52740430
复制相似问题