在我的工作中,我遇到了这样一种情况,正确的理论架构解决方案是从运行在 JRE 1.8 上的 Wildfly 8.1 (Java EE 7) 实例调用部署在 JBoss 4.3 (Java EE 5) 上的 EJB,运行在 JRE 1.6 上.
这可能吗?我会遇到什么问题?
问题是关于
的兼容性- 应用服务器
- 运行时
- 规范和标准
我知道有使用 Web 服务的解决方法。如果可能,请附上兼容性表或其他资源的链接。
最佳答案
不幸的是,在应用程序服务器之间调用 EJB 的能力被非常糟糕地指定(阅读,根本没有)。
问题在于,为了调用远程 EJB,您需要一个客户端库。该客户端库包含许多通常属于应用程序服务器的类。当客户端是 Java SE 应用程序时,这非常有效,但当客户端是另一个 Java EE 应用程序服务器时会导致严重问题(因为那时许多类会发生冲突)。
唯一的异常(exception)是当两个应用程序服务器的品牌和版本完全相同时,因为那时根本不需要客户端库。
所以一般来说,您尝试做的事情已经行不通了,但是由于您使用的是 JBoss,所以它绝对行不通。 JBoss 在从其他版本的 JBoss 调用 EJB 方面是出了名的糟糕。关于这个问题已经写了很多,并且已经做了很多尝试来解决它,但据我所知它从来没有真正奏效。
从理论上讲,这在很久以前就可以在 EJB 规范中得到修复,但是 EJB 或多或少正在退役(其功能使用其他规范重新实现),因此可以理解的是,这里没有什么动力可以修复任何东西。
关于jakarta-ee - 来自不同 JRE 和服务器版本的远程 EJB 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841988/