代码之家  ›  专栏  ›  技术社区  ›  kaka

glassfish 2.1中双耳之间的远程EJB查找

  •  1
  • kaka  · 技术社区  · 11 年前

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

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

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

    我使用的是glassfish服务器v2.1,ejb 3.0。

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

    请给我建议解决这个问题的最佳方案。

    2 回复  |  直到 11 年前
        1
  •  0
  •   kaka    11 年前

    看起来玻璃鱼2.1有问题

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

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

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

    谢谢

        2
  •  0
  •   luckyluke    11 年前

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