我目前正在测试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/

10-09 19:20