使用glassfish4在Servlet中注入EJB

时间:2016-02-29 16:05:32

标签: java servlets java-ee glassfish-4.1

我有一个servlet类,可以使用glassfish3和Java-7。

耳朵包含以下资源:

  • x.ear
    • x.war
    • 的x interface.jar
    • 的x ejb.jar

war文件中的Servlet如下所示:

@Path("/X")
@ManagedBean
public class XWebservice {

    @EJB
    SessionBeanRemoteInterface bean;

    @GET
    public String get() {
        return bean.sessionBeanMethod();
    }
}

ejb-jar中的bean看起来像这样:

@Stateless
public class XBean implements SessionBeanRemoteInterface {
}

为什么这不再适用于使用Java-8的glassfish 4.1.1? (NullPointerException,bean为null)

手动查找,但工作正常:

new InitialContext().lookup(SessionBeanRemoteInterface.class.getName()).sessionBeanMethod();

2 个答案:

答案 0 :(得分:0)

我通过将@RequestScoped注释添加到Webservice来解决了这个问题。

或者@Singleton似乎也有效。

答案 1 :(得分:0)

您有多少个实施?如果多于一个,则使用限定符(https://docs.oracle.com/javaee/6/tutorial/doc/gjbck.html)或替代(https://docs.oracle.com/javaee/6/tutorial/doc/gjsdf.html)。如果容器无法选择注射不起作用。