【问题标题】:ActiveMQ CLIENT on Java 1.4Java 1.4 上的 ActiveMQ 客户端
【发布时间】:2023-03-13 11:57:01
【问题描述】:

我们在最新版本 5.6.0 中使用 Active MQ。 现在我们遇到了必须连接一个新客户端的问题,不幸的是这个客户端是使用 IBM JDK 1.4 开发的。将 ActiveMQ 添加到应用程序会导致以下错误:

UNEXPECTED ERROR OCCURRED: org/apache/activemq/ActiveMQConnectionFactory (Unsupported major.minor version 50.0) 
STACK TRACE: 
java.lang.UnsupportedClassVersionError: org/apache/activemq/ActiveMQConnectionFactory (Unsupported major.minor version 50.0) 

我们不想切换到较旧的 ActiveMQ 版本,因为还有其他应用程序使用当前版本。现在我的问题(我知道常见问题解答,尤其是http://activemq.apache.org/can-i-use-activemq-5x-or-later-on-java-14.html):

是否有任何 ActiveMQ 客户端 jar 可用于连接到 Active MQ 5.6.0? 例如,是否可以使用 ActiveMQ 4.0 客户端连接到 Active MQ 5.6.0? 是否可以为此目的使用任何其他协议?有没有人运行成功的解决方案?

如果我必须使用我必须翻译的罐子上最低设置的逆向翻译器?有没有人使用 IBM JDK 1.4 的经验?

感谢您的回答!

【问题讨论】:

  • 我也在邮件列表中问过这个问题:activemq.2283324.n4.nabble.com/…
  • 我假设您不想将客户端迁移到更新版本的 Java。 JDK 1.4 已经停产几年了(甚至 JDK 6 今年也会 EOL)
  • 不幸的是,这是不可能的。代码在 Websphere 中运行,更新意味着额外的许可成本,客户不想要这个,我不能强迫他。
  • 除了使用retrotranslator,你还可以创建一个网关服务。例如有一个服务可以连接到所需版本的 ActiveMQ,它以它支持的协议与 websphere 进程通信,例如RMI 或旧版本的 ActiveMQ。

标签: java activemq java1.4


【解决方案1】:

您可以从 STOMP 连接到 ActiveMQ 代理,也可以使用较旧的 AMQ 5.x 客户端进行连接。您当然可以尝试使用较旧的 4.x 客户端,但并不推荐。版本 5 客户端应该能够毫无问题地连接,但是无论何时使用旧客户端,您都会遇到新版本中修复的那些客户端中包含的问题。

【讨论】:

【解决方案2】:

您可以尝试从源代码using the -target 1.4 command line option, and addressing other cross-compile concerns 自己构建 ActiveMQ(或 STOMP)。由于您有 1.4 库可用,您应该能够使用引导类路径中的那些库进行交叉编译。

如果您对新的库元素 (nio) 没有任何硬依赖,那么您可能会很幸运。或者您可能会想办法解决这些问题。

【讨论】: