java - 如何在 AS 级别为 EJB stub 创建我自己的代理

标签 java jakarta-ee ejb stub

有没有办法为远程 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/

相关文章:

java - 无法解析响应

java - 使用 DatePicker 和 TimePicker 对话框 - Eclipse 中的 Android Java

jakarta-ee - 有没有一种简单的方法可以使用标准查询来选择实体的 ID?

xml - 如何将 XML 文件用作数据库并通过 JAX-B API 访问它?

java - 如何将 EJB 功能添加到 Eclipse 动态 Web 项目?

java - 使用 boolean 值同步

java - 带有数组的 Java.Util.Scanner 的 NoSuchElementException

java - 在 Java EE Web 应用程序中使用 JPL (Java + Prolog)

java - 无法在 jboss 7 上使用 @EJB 注入(inject) EJB 3

jakarta-ee - 即使 BeanManager 知道 EJB,为什么还会出现 WELD-001408