Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过本地接口从war访问ear中的ejb_Java_Ejb 3.0_Weblogic12c - Fatal编程技术网

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

Java 通过本地接口从war访问ear中的ejb,java,ejb-3.0,weblogic12c,Java,Ejb 3.0,Weblogic12c,是否可以使用本地接口从war访问驻留在ear文件中的ejb? 两者都部署在同一个应用服务器下 ejb: @Stateless(name="FirstDemoEJB",mappedName = "FirstDemoEJB/Local") public class FirstSessionBean implements FirstSessionBeanRemote, FirstSessionBeanLocal { } 现在,在测试servlet(war)中: 失败于: javax.naming.N

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

ejb:

@Stateless(name="FirstDemoEJB",mappedName = "FirstDemoEJB/Local")
public class FirstSessionBean implements FirstSessionBeanRemote, FirstSessionBeanLocal {
}
现在,在测试servlet(war)中:

失败于:

javax.naming.NameNotFoundException:尝试查找时 comp/env/FirstDemoEJB/Local-in/app/webapp/FirstWebEJBTest/12292093

但远程查找工作正常:

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

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

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

在WebLogic中(据我所知),您可以在那里使用
RemoteInterface
。容器检查它是否真的是
LocalInterface
,并尽可能将其用作一个接口。规范不允许反向。我知道JBoss AS7在这方面遇到了一些问题。只是提到它来说明这可能是他们的问题。只是添加上面的注释吗?我认为您可能还需要meta inf文件夹中的一个空beans.xml文件,可能不需要。有关更多信息,请参阅:
public class MyServlet extends HttpServlet {
    @EJB(mappedName = "FirstDemoEJB/Local")
    private FirstSessionBeanLocal firstSessionBeanLocal;
}