【发布时间】:2014-04-25 10:13:59
【问题描述】:
有谁知道为什么将 EJB 注入 Servlet 如此困难?我正在使用 JBoss 6.2。无论我尝试什么,我的处理程序变量都是 null。
@Local
public interface RequestHandlerInterface {
public String handleRequest(String authKey);
}
@Singleton
public class RequestHandler implements RequestHandlerInterface {
...
}
public class Test extends HttpServlet {
@EJB
private RequestHandlerInterface handler; //Always null
}
在应用程序上下文中:
<bean id="requestHandler" class="company.application.RequestHandler" />
在 web.xml (v3.0) 中:
<servlet>
<servlet-name>Test</servlet-name>
<servlet-class>company.test.Test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Test</servlet-name>
<url-pattern>/Test</url-pattern>
</servlet-mapping>
<ejb-local-ref>
<ejb-ref-name>RequestHandler</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<local>company.application.RequestHandlerInterface</local>
</ejb-local-ref>
我已经尝试了很多组合,每个 @EJB(...) 选项...有什么想法吗?
注意:所有内容都包含在单个 WAR 中。
注意:我尝试过私有 RequestHandler 处理程序;而不是界面。
注意:我已尝试使用 (name="ejb/RequestHandler") 和 mappedName、beanName、lookup
注意:我尝试过使用@Remote 和@Local,使用ejb-local-ref 和ejb-ref
注意:
部署单元部署“company.war”中名为 RequestHandler 的会话 bean 的 JNDI 绑定如下:
java:global/company/RequestHandler!company.application.RequestHandlerInterface
java:app/company/RequestHandler!company.application.RequestHandlerInterface
java:module/RequestHandler!company.application.RequestHandlerInterface
java:global/company/RequestHandler
java:app/company/RequestHandler
java:module/RequestHandler
【问题讨论】:
标签: java servlets jboss dependency-injection ejb