jakarta-ee - 来自不同 JRE 和服务器版本的远程 EJB 调用

标签 jakarta-ee jboss ejb compatibility wildfly

在我的工作中,我遇到了这样一种情况,正确的理论架构解决方案是从运行在 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/

相关文章:

java - 关于 keystore 的虚拟问题?

java - 如何抑制警告 EJB THREE-1337 :do not get webservice context property

java - 使用 EJB Facade 的 create() 方法未持久保存新记录,而 JPA 使用 JSF。也没有返回错误

java - jboss-eap-quickstarts cluster-ha-singleton 客户端 JNDI 查找类转换异常

java - 无法将jsp表单值设置为类变量

使用 JMS 发布订阅的 Java EE 替代方案

java - 如何将smartGWT(表示层)与Spring服务集成?

java - 使用 EJB,ClientEJB 无法识别 EJB 项目中的域对象

java - 离线/在线数据同步策略

java - 为什么 ServletContext#getRealPath ("/") 返回相对路径?