在 JBoss EAP 中使用自定义 JGroups 模块

Posted

技术标签:

【中文标题】在 JBoss EAP 中使用自定义 JGroups 模块【英文标题】:Using custom JGroups module in JBoss EAP 【发布时间】:2020-01-20 05:30:16 【问题描述】:

我有 JBoss EAP 6.4 和 JGroups 3.2.13。要使用服务发现将应用程序迁移到 Amazon ECS,我需要 DNS_PING 协议 (article about migration)。问题是 DNS_PING 仅在 JGroups 4.0.12 (github link) 中添加,因此我无法轻松包含它。

我最初的想法是为 JBoss 实现自己的模块并在其中包含缺失的类。但似乎对 JGroups 的其他部分存在依赖项,这些依赖项不同于 4 到 3.2 版本(utils 类、日志记录等)。

另一个解决方案可能是用更新版本的整个模块替换现有的 JGroups 3.2.13。不幸的是,我无法更新到 JBoss EAP 7,但只能从中替换一个模块。问题是 JBoss 中的其他模块取决于 JGroups,我想知道是否有从 4 到 3 的 JGroups 的后退功能?

还有其他可能的选择吗?或者您能对核心模块的此类更新提出任何建议吗?

【问题讨论】:

你不能指望它在交换主要版本后会兼容。如果您卡在旧版本上,最好的解决方案可能是自己向后移植 DNS_PING。 不幸的是,协议类在 JGroups 3 和 4 版本中应该实现的接口存在差异。因此,在花了一些时间向后移植 DNS_PING 之后,我决定切换到第三版中实现的 JDBC_PING 方法。 【参考方案1】:

您也可以尝试将 NATIVE_S3_PING 反向移植到 3.2.13,这可能比 DNS_PING 更简单,因为它托管在不同的存储库中。

[1]https://github.com/jgroups-extras/native-s3-ping/blob/master/src/org/jgroups/aws/s3/NATIVE_S3_PING.java

【讨论】:

感谢您的建议!我使用了 JDBC_PING,但这也是一个不错的选择。

以上是关于在 JBoss EAP 中使用自定义 JGroups 模块的主要内容,如果未能解决你的问题,请参考以下文章

JBoss EAP 6.2 CDI beans.xml

作为部署安装时的 jboss-eap-6.1 oracle 驱动程序定义

如何定义 JBoss 安全角色 - 从 WebSphere 迁移到 EAP 6.4

Jboss EAP 6.4 无法在模块中定义类 org.springframework.web.servlet.DispatcherServlet

Jboss (6.4 EAP) 到 WebSphere (7.x)

从 JBoss 7 EAP 中排除提供的 jackson 版本