gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:09 25 4
gpt4 key购买 nike

我试图将 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com