有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java通过本地接口从war访问ear中的ejb

是否可以使用本地接口从war访问驻留在ear文件中的ejb
两者都部署在同一个应用服务器下

ejb:

@Stateless(name="FirstDemoEJB",mappedName = "FirstDemoEJB/Local")
public class FirstSessionBean implements FirstSessionBeanRemote, FirstSessionBeanLocal {
}

现在,在测试servlet(war)中:

InitialContext context = new InitialContext();          
Object ob = context.lookup("java:comp/env/FirstDemoEJB/Local");

失败于:

javax.naming.NameNotFoundException: While trying to look up comp/env/FirstDemoEJB/Local in /app/webapp/FirstWebEJBTest/12292093.;

但是远程查找可以很好地工作:

Object ob  = context.lookup("FirstDemoEJB/Local#org.weblogic.FirstSessionBeanRemote");

共 (1) 个答案

  1. # 1 楼答案

    您应该使用容器依赖注入从servlet访问ejb。问题很可能是jndi查找路径不正确。使用容器依赖项注入可以让您不必了解jndi命名方案

    public class MyServlet extends HttpServlet {
        @EJB(mappedName = "FirstDemoEJB/Local")
        private FirstSessionBeanLocal firstSessionBeanLocal;
    }