从 JBoss 4.2.x 升级到 JBoss 5.x、6.x、7.x 和 WildFly 8.x 的好处(和提示)?

2022-09-01 10:54:24

请假设我不需要担心开发时间和成本:我对一般的技术优势(改进的性能?改进的API?)和新功能感兴趣。

我目前正在开发使用4.2.x的产品,我们考虑对需要融合的版本进行重大转变。

我简要介绍了每个版本的发行说明以及有关5.x,6.x,7.x和8.x的每个版本的一些文章。但是,我很高兴能从做出改变的人那里得到第一手的反馈。

我注意到围绕消息传递有一些重要的变化(从JBoss MQ切换到JBoss Messenging),对于JBoss 7.x,它似乎改变了它的配置层。然后,在切换到JBoss/ WildFly 8.x时,还有更多的事情发生。

如果可以的话,请推荐指向陷阱的好文章。我发现了一些迁移到JBoss 5.x,但6.x甚至7.x的迁移并不多,其他人现在正在为我们评估8.x。如果您认为替代方案相关,请随时推荐它们,尽管我更愿意只关注JBoss。

作为信息,我们混合使用支持JPF和OSGi(使用Eclipse Equinox)的基于插件的系统,以及用Swing开发的客户端(有些通过WebStart部署)。

更新:虽然这个问题已经带来了一些很好的答案,但我认为它应该为WildFly进行更新(实际上,我们的内部项目推迟了从4.2.x切换到7.x,因为最初计划等待WildFly)。欢迎提出新的想法和答案。


答案 1

我已经从 JBoss 4 升级到了 5,从经验来看,以下是最重要的注意事项:

  • JBoss 5(以及 6 和 7)不像 JBoss 4 那样宽容,只有 XML 文件。必须确保所有部署描述符 XML 文件都有效。您可能在某些文件中使用 DTD - 我建议将这些文件升级为使用 XML 架构。
  • 某些库可能会导致不兼容。如果您访问 Web 服务和/或执行 XML 解析,则尤其如此
  • 如果您在 JBoss 4 中预编译 JSP,则可能无法在 JBoss 6/7 中编译。
  • JBoss 4 和 5 使用不同的消息队列实现。如果定义了任何消息队列或主题,则需要重新定义它们。
  • JBoss TreeCache 不再使用。如果您将其用于缓存目的,则需要更改为使用新的 JBoss 缓存。
  • JBoss 5 的安全性则不同。如果您的远程客户端需要对 JBoss 的安全访问,则需要以不同的方式配置它们。

一些有用的资源是:

https://dzone.com/articles/migrating-jboss-4-jboss-5 http://venugopaal.wordpress.com/2009/02/02/jboss405-to-jboss-5ga

官方的 JBoss 6 仅通过 Java EE Web Profile 认证,因此,如果您使用 EJB 2.x 等“遗留”功能,它们将来可能不受支持。根据应用程序的生命周期,这可能是问题,也可能不是问题。JBoss 6 目前完全支持 EJB2.1,但它没有针对此进行认证。

我还发现JBoss 5处理内存比JBoss 4好得多。在 JBoss 4 中,我看到的 PermGen 错误比使用 JBoss 5 要多得多。


答案 2

我只能从 JBoss 5.1.0 的生产经验和对版本 6 的一些调查来谈谈。

JBoss 5 是 Java EE 5,JBoss 6 和 7 是 Java EE 6。API功能的差异最好记录在这些规范中。JBoss 6的保质期可能非常短;它仅针对Java EE 6 Web配置文件进行了认证,并且错误修复针对版本7(在撰写本文时处于其第3个测试版中)。

我想你会在JBoss社区论坛上得到更好的答案。


推荐