【问题标题】:Benefits (and tips) of an upgrade from JBoss 4.2.x to JBoss 5.x, 6.x, 7.x and WildFly 8.x?从 JBoss 4.2.x 升级到 JBoss 5.x、6.x、7.x 和 WildFly 8.x 的好处(和提示)?
【发布时间】:2011-09-06 08:45:29
【问题描述】:

请假设我不需要担心开发时间和成本:我对一般技术优势(改进的性能?改进的 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)。欢迎新的想法和答案。

【问题讨论】:

    标签: java jakarta-ee jboss migration wildfly


    【解决方案1】:

    我已经从 JBoss 4 升级到 5,根据经验,以下是最需要注意的:

    • JBoss 5(以及 6 和 7)不像带有 XML 文件的 JBoss 4 那样宽容。您必须确保所有部署描述符 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 时要多得多。

    【讨论】:

    • 感谢您的回答。我认为你的是最完整的,虽然我希望多一点。我给了你接受的答案和赏金以及 +1 票。
    • 如果您也想更新 JBoss 8 的答案,我已经添加了额外信息的赏金。
    • 是的,我们对这个主题非常感兴趣,因为 JBoss 4.0.5 失败与安全性和 XML 解析器已知错误有关。最近,由于这个 JBoss 版本的一些安全故障,我们注册了黑客攻击以进行比特币挖矿。问题是,JBoss 4.2.2 和 4.2.3 版本可以修复这个失败吗?
    【解决方案2】:

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

    JBoss 5 是 Java EE 5,JBoss 6 和 7 是 Java EE 6。这些规范中最好地记录了 API 功能的差异。 JBoss 6 的保质期可能很短;它是only certified for the Java EE 6 web profile,错误修复针对的是第 7 版(在撰写本文时是第 3 个测试版)。

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

    【讨论】:

      【解决方案3】:

      我们从 JBoss AS 5 升级到 JBoss AS 7,并且正在关注 WildFly AS 8.1。目前我们无法迁移到 8,因为没有 MQ 系列 JMS 2 RAR。

      一些区别:

      • 配置更好更简单。它不再分布在 20 个 XML 文件中,您可以在其中配置 XML 文件中的方面。相反,一切都是一个中心位置。所有端口都配置在一个中心位置,不再有转换 server.xml 的 XSL 文件。您可以在不知道类的实现细节的情况下理解配置文件。如果您从未配置过 JBoss 5.x,就很难理解这一点。
      • 类加载模型看起来很正常,您可以通过 jboss-deployment-structure.xml 获得很多控制
      • 集中式日志记录(Slf4j、JUL、JCL、Log4j 等)非常棒。
      • EJB 客户端库看起来更加整洁。 JAR 从 20 个减少到 10 个,其中一半甚至是 OSGi 包(我们的客户端是 Eclipse RCP 应用程序)。
      • EJB 客户端 maven 依赖项混乱已经消失,取而代之的是您现在获得了 BOM POM。
      • 您将获得服务器 API 的 BOM POM。
      • 更快的启动和更少的内存使用。我们在 6 秒内部署了 80 个 EJB 和 MQ 系列 RAR,无需进行太多调整。我们的实时数据集超过 200 MB。
      • 部署文件夹默认为空
      • XNIO 的(缺乏)质量令人恐惧。在 7.x 中,它仅用于 EJB 远程处理,我们遇到了几个显示停止错误(死锁、双重释放、套接字句柄泄漏……)。在 8.x 中,它也用于 servlet 而不是 Tomcat。仍有许多非常基本的 servlet 错误正在修复中。

      我们必须在应用程序中进行的更改:

      • 将 JNDI 名称更改为 EE 6 标准化名称
      • 从 JBoss Cache 迁移到 Infinispan(我们的部分代码已经迁移到 flat API,有些部分仍然使用 tree API)
      • 安全性稍差(您无法再修复经过身份验证和未经身份验证的调用)
      • 一些依赖远程 JNDI 细节的可怕代码
      • EJB 客户端的配置不同
      • 所有用于安装、部署、启动、停止的脚本……
      • ExternalContext 消失了,我们不得不用不同的方法替换它
      • 我们将 SAR 中的 MBean 替换为 @StartUp EJB
      • Cocoon 的一些丑陋的小技巧

      AS 7.x 系列有 很多 错误,修复仅在 EAP 系列中可用。如果您想使用 7.x 而不是 8.x,我们强烈建议您购买 EAP 6。

      【讨论】:

        【解决方案4】:

        这是一个关于 JBoss AS 7 妥协和未来的有趣线程,还提到了 AS 5 和 AS 6 的问题:

        http://community.jboss.org/message/613171

        【讨论】:

          【解决方案5】:

          只是想让任何可能在升级到最新版本后面临 PermGen 膨胀问题的人注意这一点。 JBoss-6 微容器尝试通过在启动时从类路径中的所有 JAR 加载类来扫描 Jboss 特定的注释。这会导致 PermGen 膨胀,因为它开始加载所有不需要的类。为了减少扫描量,微容器通过 jboss-scanning.xml 提供了另一个描述符挂钩。 将此“jboss-scanning.xml”添加到 WAR 内的 WEB-INF,并将“jboss-scanning.xml”添加到 EAR 内的 META-INF。

          <scanning xmlns="urn:jboss:scanning:1.0">
          
              <!-- Purpose: Disable scanning for annotations in contained deployment. -->
          
          </scanning>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-26
            • 1970-01-01
            • 1970-01-01
            • 2021-10-16
            • 1970-01-01
            相关资源
            最近更新 更多