我正在尝试使用注释类@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
答案 0 :(得分:0)
要注入T1Service
的控制器也是@Stateless
Bean?如果它在同一个应用程序中运行,则可以省略属性lookup
的定义。
如果您使用的是Java EE 6/7/8,我还建议您使用CDI(@Inject
)。 (有关详细信息,请参阅here)