java - servlet 中的 EJB 注入(inject)失败

标签 java jakarta-ee jboss ejb-3.0 ejb

我试图将 EJB 无状态 bean 注入(inject)到 servlet 中,但 servlet 抛出 NullPointerExcetion。我正在使用 JBOSS 部署 EJB 和 servlet。

我是 Java 世界的新手,所以我发布了我遵循的步骤。

界面

package MavenEJB.Bidding`
import javax.ejb.Local;

@Local
public interface PlaceBid {
 public String AddBid();
}

bean

package MavenEJB.Bidding;
import javax.ejb.Stateless;
@Stateless(name="PlaceBid")
public class PlaceBidBean implements PlaceBid {
 public PlaceBidBean(){}

 /**
  * Include logic to add the bid 
  */

 public String AddBid(){
  return "Placed bid using EJB"; 
 }
}

我使用 maven 创建了一个 bean 的 jar 文件,并将该 jar 文件复制到 JBOSS 的“部署”目录。我能够在 JMX 控制台中看到部署的 bean。

JMX 控制台中的全局 JNDI 命名空间

+- PlaceBid (class: org.jnp.interfaces.NamingContext)
  |   +- local (proxy: $Proxy63 implements interface MavenEJB.Bidding.PlaceBid,interface org.jboss.ejb3.JBossProxy)

我的 servlet 代码

public class PlaceBidServlet extends HttpServlet {

    @EJB
    private PlaceBid placeBid;

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html");

  PrintWriter out = response.getWriter();
     out.println("<HTML>");
     out.println("<HEAD><TITLE>Hello</TITLE></HEAD>");
     out.println("<BODY>");
  out.println("Output from EJB" +placeBid.AddBid());

     //out.println("Output from EJB" );
     out.println("</BODY></HTML>");  
 }

....
}

当我指向我的 servlet 的 URL 时,我得到 NullPointerException。当我评论这个 bean 并打印其他东西时,它打印得很好。所以我确定问题出在 servlet 中的 EJB 依赖注入(inject)。 我尝试了许多其他建议的解决方案,但没有任何效果,请有人帮助我。

最佳答案

经过几个小时我发现了问题,我将其发布以便其他人可以受益。 问题是,我使用的是 JBOSS 4.2.3 并且作为这篇文章 http://community.jboss.org/message/410211建议 jboss 4.2.x 不支持在 servlet 中注入(inject) EJB。

我使用的是 Jboss 5.1,如果 servlet 和 EJB 不在一个 ear 包中,则必须使用 mappedName 来进行 EJB 注入(inject)。我在 WAR 中有 servlet,在单独的 Jar 中有 EJB。查看此帖子了解更多详情 http://community.jboss.org/message/8196#8196

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

相关文章:

java - 未显示滚动条时如何摆脱 SWT ScrolledComposite 中的浪费空间

java - 在 EJB 中注入(inject)数据源

java - 尝试在 EJB 中创建计时器时出现异常

java - 如何为 Jboss 环境的 JUnit 注册 JNDI 数据源

spring - Web应用程序中的JBoss AS 7 Log4j不更改日志级别

jboss - JEE6 REST 服务 @AroundInvoke 拦截器正在注入(inject)一个空的 HttpServletRequest 对象

java - 浏览器关闭时 Servlet 长处理取消

java - 在 Mac OS X 中双击文档文件打开 Java 应用程序

java - 使用 Ubuntu 15.10 的 Maven,出现 : mvn clean install; 错误

java - 插入前加密/解密实体 'Password' 字段 - JPA