java - 通过本地接口(interface)从 war 访问 ejb in ear

标签 java ejb-3.0 weblogic12c

是否可以使用本地接口(interface)从 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");

最佳答案

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

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

关于java - 通过本地接口(interface)从 war 访问 ejb in ear,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671528/

相关文章:

java - 我的 if-else 语句只工作一次

java - JSF2 : Open Session in View with EJBs?

weblogic - 无法在 Weblogic 12c 上部署 ear 文件

java - 我正在 weblogic 12.2.1.2 上部署一个restFull webservice webapp,但它失败了

java - 如何在 Quarkus 应用程序中检索 SecurityContext?

java - 如何同时使用@Component类中的字段?

Java 同步方法 - OCPJP

ejb-3.0 - 在 Java EE (GlassFish) 中使用 Cassandra

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