1

我有 2 只耳朵。第一个 EAR 包含所有带有接口的 jar (EAR_INTERFACE.ear)。这些接口被标记为远程。

第二只耳朵包含 ejbs(EAR_EJB)。这些ejb 实现了第一只耳朵的@remote 接口。EJB 是无状态的并且具有mappedName。为了获得对 ejb 的引用,我在第二个 EAR 中使用 ejb 的 mappedName 进行了 jndi 查找。

在这里我面临这个问题,我无法获得对远程 EJB 的引用。如果接口和 ejb 在同一个 EAR 中,则查找成功,但在不同 EAR 之间查找失败。

我正在使用 glassfish 服务器 v2.1、ejb 3.0。

我搜索了这个问题,发现了有关父子 EAR 的信息。这会解决我的问题吗。如果是,如何实施。我是否需要在 EAR 的 application.xml 中提及某些内容。

请建议我解决问题的最佳选择。

4

2 回答 2

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");
于 2013-10-18T12:10:20.627 回答
0

看起来 glassfish 2.1 有问题

如果接口与 ejb 不在同一个模块中,则查找失败。类加载器不加载接口,因此不会生成存根。

我的 ejb jar 在耳朵里,界面在另一个 jar 里。我如何找到解决此问题的方法。在部署ear之前,将接口jar保存在domain/domain1/lib/ext中,重启glassfish。部署包含 ejb 的 ear。部署成功后,将接口jar复制到application/j2ee-apps/并重新启动glassfish。然后,如果我尝试进行查找,则查找成功。

如果有人遇到类似问题或有更好的解决方法,请回复。

谢谢

于 2013-10-12T19:35:35.030 回答