【问题标题】:Remote EJB Lookup Between two ears in glassfish 2.1glassfish 2.1 中两只耳朵之间的远程 EJB 查找
【发布时间】:2013-10-08 11:13:07
【问题描述】:

我有 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 中提及一些内容吗?

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

【问题讨论】:

    标签: jakarta-ee glassfish ejb-3.0


    【解决方案1】:

    glassfish 2.1 似乎存在问题

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

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

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

    谢谢

    【讨论】:

      【解决方案2】:

      如何进行 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");
      

      【讨论】:

      • 接口怎么样。您是否将远程 ejb 的接口保存在同一模块或单独的模块中?部署时 ejb 及其接口是在同一个存档文件中还是在不同的存档文件中?
      • 我有 3 个 Maven 项目。第一个具有所有接口,第二个具有接口的实现,第三个使用接口进行查找并调用接口方法。部署时,接口位于单独的存档文件中。
      • 接口所在的存档文件,是ear 还是jar?如果它是一个罐子,你把它放在 glassfish 的什么地方?如果它是一个耳朵,你如何部署它。还是就像所有模块都是 jar 并且它们在单耳和您部署的那只耳中?谢谢
      • 我在上一条评论中犯了一个小错误。接口在两个档案中。一个档案是一个 jar,其中包含接口和 Bean。另一个是war,它包含Interfaces和Servlet,它使用上面的代码进行实例化。生产环境中的部署是一个特殊的暂存过程。使用 eclipse glassfish 插件进行开发部署。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 2015-04-20
      • 2019-05-21
      • 2020-05-31
      相关资源
      最近更新 更多