我有2个EARS。第一个EAR包含所有带接口的jar(EAR_INTERFACE.ear)。 这些接口标记为远程。
第二个耳朵包含ejbs(EAR_EJB)。这些ejbs从第一个耳朵实现@remote接口.EJB是无状态的并且具有mappedName。 为了获得对ejb的引用,我在第二个EAR中使用ejb的mappedName进行jndi查找。
我在这里遇到问题,我无法获得对远程EJB的引用。 如果接口和ejbs在同一个EAR中,则查找成功,但在不同的EAR之间失败。
我正在使用glassfish服务器v2.1,ejb 3.0。
我搜索了这个问题并找到了关于父子EAR的信息。 这会解决我的问题。如果是,如何实现这一点。我是否需要在EAR的application.xml中提及一些内容。
请建议我解决问题的最佳方案。
答案 0 :(得分:0)
看起来像glassfish 2.1有问题
如果接口与ejb不在同一模块中,则查找失败。类加载器不加载接口,因此不会生成存根。
我的ejb jar在耳边,界面在另一个罐子里。 一些我如何找到解决此问题的方法。在部署耳朵之前,将接口jar保留在domain / domain1 / lib / ext中,重新启动glassfish。部署包含ejbs的耳朵。部署成功完成后,将接口jar复制到application / j2ee-apps /并重新启动glassfish。然后,如果我尝试进行查找,则查找成功。
如果有人遇到类似问题或有更好的解决方法,请回复。
由于
答案 1 :(得分:0)
你如何进行JNDI查找?
我们有一些GF 2.1服务器,如果EJB在不同的项目中,唯一的解决方案就是这样查找:
RemoteInterface bean = null;
Properties props = new Properties();
props.setProperty("org.omg.CORBA.ORBInitialHost", "host");
props.setProperty("org.omg.CORBA.ORBInitialPort", "port");
InitialContext ctx = new InitialContext(props);
RemoteInterface bean = (RemoteInterface)
ctx.lookup("full.qualified.name.RemoteInterface");