使用@EJB查找失败

时间:2018-01-17 15:02:17

标签: java ejb wildfly-10 stateless-session-bean

我正在尝试使用注释类@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

1 个答案:

答案 0 :(得分:0)

要注入T1Service的控制器也是@Stateless Bean?如果它在同一个应用程序中运行,则可以省略属性lookup的定义。

如果您使用的是Java EE 6/7/8,我还建议您使用CDI(@Inject)。 (有关详细信息,请参阅here