使用 @EJB 查找失败



我试图使用注解类@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。(更多信息请看这里(

最新更新