如何在AS级别为EJB存根创建我自己的代理



是否有办法为远程EJB存根创建自己的代理?在应用服务器级别?

我正在研究ORB相关的配置,例如属性javax.rmi.CORBA。PortableRemoteObjectClass,但应用服务器不能正确实现它(例如https://issues.apache.org/jira/browse/YOKO-429)。而且它只与CORBA相关,据我所知,CORBA只是一种可能的实现。

编辑:在应用程序服务器级别做这件事的重点是我不能修改应用程序源代码,我得到的只是EAR:

如果不完全满足ejb规范,这是不可能的,因为您的代理必须实现RMI IIOP协议才能使远程通信成为可能。

从java以外的编程语言与EJB通信是不可能的。在这种情况下,应用程序服务器必须提供EJB远程接口的WebService接口,其中通信基于xml和HTTP协议。看一下WSDL和Rest。我不建议使用CORBA,因为该技术已不再受支持。

由于注释而编辑

EJB必须部署在适当的EJB容器中,因为整个生命周期由容器管理。您可以看一下EJB可嵌入api。如果您不想使用应用程序服务器,那么您可以退回到基础服务器RMI技术,你已经提到了。RMI不需要应用程序服务器,但是必须考虑一些其他问题(RMI注册表)。

然而,我建议将逻辑与ejb类解耦,并使用POJO作为逻辑。EJB本身只是通过引用适当的类将远程方法调用委托给您的POJO。现在,您可以将逻辑打包,而不需要任何技术依赖,放在一个可以被任何其他应用程序引用的jar中。

查看Facade、Strategy或Business Delegate模式

最新更新