有没有办法为远程 EJB stub 创建自己的代理?在应用程序服务器级别?
我正在研究 ORB 相关配置,例如属性 javax.rmi.CORBA.PortableRemoteObjectClass,但应用程序服务器没有正确实现它(例如 https://issues.apache.org/jira/browse/YOKO-429 )。而且它只与CORBA有关,我理解这只是可能的实现之一。
编辑:在应用程序服务器级别执行此操作的要点是我无法修改应用程序源代码,我得到的只是 EAR:
最佳答案
如果没有完全满足 ejb 规范,这不可能那么容易,因为您的代理必须实现 RMI IIOP 协议(protocol)才能使远程通信成为可能。
无法使用 java 以外的编程语言与 EJB 进行通信。在这种情况下,您的应用程序服务器必须提供 EJB 远程接口(interface)的 WebService 接口(interface),其中通信基于 xml 和 HTTP 协议(protocol)。 查看 WSDL 和 Rest。 我不建议使用 CORBA,因为不再支持该技术。
因评论而编辑
EJB 必须部署在适当的 EJB 容器中,因为整个生命周期都是由容器管理的。您可以看看EJB embeddable api 。 如果您不想使用应用程序服务器,那么您可以回退到基础服务器 RMI技术,你已经提到了。 RMI 不需要应用程序服务器,但还有一些其他问题(RMI 注册表)必须考虑。
但是,我建议将逻辑与 ejb 类解耦,并使用 POJO 来实现逻辑。 EJB 本身只是通过引用适当的类将远程方法调用委托(delegate)给 POJO。 现在,您可以将逻辑打包在 jar 中,而无需任何技术依赖性,任何其他应用程序都可以引用该逻辑。
看看外观、策略或业务代表模式。
关于java - 如何在 AS 级别为 EJB stub 创建我自己的代理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25260490/