通过本地接口从战争中获取ejb

时间:2014-12-27 21:14:48

标签: java ejb-3.0 weblogic12c

是否可以从使用本地界面的战争中访问驻留在耳内文件中的ejb? 两者都部署在同一个app服务器下

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:尝试查找时   / app / webapp / FirstWebEJBTest / 12292093中的comp / env / FirstDemoEJB / Local。;

但远程查找工作正常:

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

1 个答案:

答案 0 :(得分:1)

您应该使用容器依赖项注入来从servlet访问ejb。最有可能的问题是你的jndi查找路径不正确。使用容器依赖注入可以减轻您对jndi命名方案的了解。

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