Java SE和Weld?

时间:2018-10-10 12:35:49

标签: java dependency-injection weld

我目前正在测试Java SE的CDI 2.0(焊接)-我读到,不需要使用bean.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年10月10日下午2:22:04 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   信息:WELD-000101:事务服务不可用。 @Inject UserTransaction的注入不可用。事务性观察者将被同步调用。
  Okt 10,2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer fireContainerInitializedEvent   INFO:WELD-ENV-002003:焊接SE容器5adc2948-acd7-423c-84dc-c1463534c309已初始化
  Okt 10,2018 2:22:05 PM org.jboss.weld.environment.se.WeldContainer关闭   INFO:WELD-ENV-002001:焊接SE容器5adc2948-acd7-423c-84dc-c1463534c309已关闭

我想念什么?

谢谢。

1 个答案:

答案 0 :(得分:1)

CDI容器工作正常。
Transactional services not available指出您不在事务管理器下运行,默认情况下,该事务管理器将(几乎)运行在应用程序服务器中。