java - 将EJB注入(inject)Servlet

标签 java servlets jboss dependency-injection ejb

有谁知道为什么将 EJB 注入(inject) 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 中。
注意:我尝试过私有(private) RequestHandler 处理程序;而不是界面。
注意:我尝试过 (name="ejb/RequestHandler") 和mappedName、beanName、lookup
注意:我尝试过使用 @Remote 和 @Local、ejb-local-ref 和 ejb-ref

注意:
部署单元部署“company.war”中名为 RequestHandler 的 session bean 的 JNDI 绑定(bind)如下:

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

最佳答案

使用 local 而不是 home,如下所示

<ejb-ref>
   <ejb-ref-name>ejb/RequestHandler</ejb-ref-name>
   <ejb-ref-type>Session</ejb-ref-type>
   <local>company.application.RequestHandlerInterface</local>
</ejb-ref>

关于java - 将EJB注入(inject)Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22501261/

相关文章:

java - jsp 编译器的奇怪行为

java - JBoss 中的库与 Spring 和 Hibernate 发生冲突

java - 哪个resteasy-client适合Jboss 6.4 EAP?

java - 为什么新文件 ("")不提供现有目录?

java - 在 Cucumber 数据表中使用列表

java - clojure 中的 MySQL 枚举数据类型访问

java - Spring Boot 测试无法识别 servlet

java - 从广播接收器以及应用程序访问数据库

HTML 资源不受 servlet 的限制

jquery - 服务程序 : Not able to get the response back to ajax function(in success block)