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

我使用具有glassfish服务器的NETbeans IDE开发了EJB。 我可以从独立的java中调用它,只有当这个java项目是在NETbeans下开发并在相同的JRE下运行时。 但我需要找出如何在不同的jre中运行它。 我找不到这方面的帮助。 有什么建议么? (或相关链接会做)谢谢,

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

  • 在EJB上使用@Remote注释

  • 提供带接口的jar并将其放在client-vm的类路径中

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

  • 对于JNDI,你需要一个依赖于容器的实现(例如,如果它的JBoss jboss-client-all.jar应该足够了(我不记得确切的名字,但你知道了)

一旦你对整体概念和定义感到满意,请阅读这个例子,我认为它足够方便了

希望这可以帮助

步骤1:

Context context = new InitialContext(): 
  1. 初始上下文是对JNDI查找服务的引用。
  2. 它就像进入JNDI虚拟目录树一样。

第2步:

 Object o = context.lookup("mejb"): 
  1. 在查找中,我们需要给出服务器中部署的bean的名称,以获得对该bean的home接口的引用。
  2. 然后我们得到java.lang.Object类型的对象,我们需要将这个对象转换为我们查找的bean的Home接口。

第3步:

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