我试图使用注解类@EJB查找我的无状态 bean,但失败了。我正在使用WildFly 10作为EE容器。无状态 Bean 接口如下所示:
@Local
public interface T1Service {
String sayHi();
}
实现类:
@Stateless
public class T1ServiceImpl implements T1Service {
@Override
public String sayHi() {
return "Hi!";
}
}
在我的控制器中,我想注入服务:
@EJB(lookup = "javaee/T1ServiceImpl")
private T1Service t1Service;
拨打电话:
t1Service.sayHi();
但它失败并显示 NullPointerException(t1Service
为 null(。
我错过了什么?
请注意,JNDI 绑定是:
java:global/javaee/T1ServiceImpl!p1.T1Service
java:app/javaee/T1ServiceImpl!p1.T1Service
java:module/T1ServiceImpl!p1.T1Service
java:jboss/exported/javaee/T1ServiceImpl!p1.T1Service
java:global/javaee/T1ServiceImpl
java:app/javaee/T1ServiceImpl
java:module/T1ServiceImpl
要注入T1Service
的控制器也是@Stateless
Bean?如果它在同一应用程序中运行,则可以省略属性lookup
的定义。
我还建议使用CDI(@Inject
(,以防您使用的是Java EE 6/7/8。(更多信息请看这里(