EJB 注入 Servlet 与玻璃鱼4.



我有一个servlet类,在glassfish3和Java-7上工作得很好。

耳朵包含以下资源:

  • x.耳朵
    • 十、战争
    • X 接口.jar
    • x-ejb.jar

war 文件中的 Servlet 如下所示:

@Path("/X")
@ManagedBean
public class XWebservice {
    @EJB
    SessionBeanRemoteInterface bean;
    @GET
    public String get() {
        return bean.sessionBeanMethod();
    }
}

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

@Stateless
public class XBean implements SessionBeanRemoteInterface {
}

为什么这在使用Java-8的Glassfish 4.1.1中不再起作用?(NullPointerException, bean is null)

但是,手动查找工作正常:

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

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

我通过将@RequestScoped注释添加到 Web 服务来解决此问题。

或者@Singleton似乎也有效。

最新更新