是否可以使用本地接口(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/