Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.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
如何在不同的JVM中从独立java程序调用EJB_Java_Ejb - Fatal编程技术网

如何在不同的JVM中从独立java程序调用EJB

如何在不同的JVM中从独立java程序调用EJB,java,ejb,Java,Ejb,我已经使用带有glassfish服务器的NETbeans IDE开发了EJB。我可以从独立java调用它,前提是这个java项目是在NETbeans下开发的,并且在相同的JRE下运行。但我需要找出如何在不同的jre中运行它。 在这件事上我找不到什么帮助。有什么建议吗?(或者相关链接也可以) 谢谢,为了从远程JVM调用EJB,您应该 在EJB上使用@Remote注释 提供一个带有接口的jar,并将其放在客户机vm的类路径中 使用JNDI从服务器获取EJB存根上的引用 对于JNDI,您需要一个依赖

我已经使用带有glassfish服务器的NETbeans IDE开发了EJB。我可以从独立java调用它,前提是这个java项目是在NETbeans下开发的,并且在相同的JRE下运行。但我需要找出如何在不同的jre中运行它。 在这件事上我找不到什么帮助。有什么建议吗?(或者相关链接也可以)
谢谢,

为了从远程JVM调用EJB,您应该

  • 在EJB上使用@Remote注释

  • 提供一个带有接口的jar,并将其放在客户机vm的类路径中

  • 使用JNDI从服务器获取EJB存根上的引用

  • 对于JNDI,您需要一个依赖于容器的实现(例如,如果它的JBoss-client-all.jar应该足够了(我不记得确切的名称,但我想您已经明白了重点)

一旦您对总体概念和定义感到满意,请阅读此示例,我认为它已经足够方便了

希望这有助于

步骤1:

Context context = new InitialContext(): 
  • 初始上下文是对JNDI查找服务的引用
  • 它类似于进入JNDI虚拟目录树的条目
  • 步骤2:

    Object o = context.lookup("mejb"): 
    
  • 在这里的查找中,我们需要给出bean的名称,无论部署在服务器中的是什么,以获得对该bean的主接口的引用
  • 然后我们得到java.lang.object类型的对象,我们需要将这个对象转换到我们查找的任何bean的主接口
  • 步骤3:

    Home home = (Home) PortableRemoteObject.narrow(o,Home.class):
    
  • 实际上,我们需要将对象强制转换为我们认为它是的类型。然而,由于这是IIOP上的RMI,我们需要使用PortableRemoteObject.窄带方法。这似乎将对象类型过滤为实际的对象类型并检查错误