有没有办法为远程EJB存根创建自己的代理?在应用程序服务器级别?
我正在研究ORB相关配置,例如属性 javax.rmi.CORBA.PortableRemoteObjectClass ,但是应用程序服务器没有正确实现它(例如https://issues.apache.org/jira/browse/YOKO-429)。它只与CORBA有关,我理解它只是可能的实现之一。
编辑:在应用程序服务器级别这样做是因为我无法修改应用程序源代码,我得到的只是EAR:
答案 0 :(得分:1)
如果没有完全满足ejb规范,这是不可能的,因为您的代理必须实现RMI IIOP协议才能实现远程通信。
不可能使用java以外的编程语言与EJB进行通信。在这种情况下,Application Server必须提供EJB远程接口的WebService接口,其中通信基于xml和HTTP协议。 看看WSDL和Rest。 我不建议使用CORBA,因为不再支持此技术。
由于评论而编辑
EJB必须部署在适当的EJB容器中,因为整个生命周期由容器管理。您可以查看EJB embeddable api。 如果您不想使用Application Server,那么您可以回退到基础 RMI技术,您已经提到过。 RMI不需要Application Server,但还有一些其他问题(RMI Registry)必须考虑。
但是我建议将逻辑与你的ejb类分离,并使用POJO作为你的逻辑。 EJB本身只是通过引用适当的类将远程方法调用委托给您POJO。 现在,您可以在jar中打包没有任何技术依赖关系的逻辑,可以被任何其他应用程序引用。
查看Facade,Strategy或Business Delegate模式。