我创建了一个包含Web项目,ejb3项目和ejb客户端的EAR。我可以通过servlet中的注入来调用bean方法。 我打算使用ServiceDelegate,它是一个处理bean调用的pojo。所以我将从我的servlet调用委托,委托将调用适当的bean及其方法。
但是我无法在web项目中的委托类中获取bean引用。 @EJB注释返回了一个空引用。所以我尝试使用 java:comp / env / EARname / BeanName 进行JNDI查找。但我总是以命名例外结束。
在上下文“java:”中找不到名称comp / env / EARname。
请建议我在Websphere 7服务器上通过JNDI调用ejb3 bean的正确方法。
答案 0 :(得分:2)
Java EE 5和6中的依赖注入仅适用于托管类。在servlet容器中,这在几种类中是受支持的,而在所有POJO中都不受支持(不幸的是)。
Servlet Spec 2.5揭示了容器必须注入依赖项的类:
组件类型:Servlets
实现以下接口的类
组件类型:过滤器
实现以下接口的类:
组件类型:听众
实现以下接口的类:
因此,如果您必须解决依赖项查找问题,则可以采用以下任一策略: