从JBoss 4.2.x升级到JBoss 5.x,6.x,7.x和WildFly 8.x的好处(和技巧)?

hay*_*lem 31 java migration jboss java-ee wildfly

请假设我不需要担心开发时间和成本:我对一般技术优势(改进的性能?改进的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进行更新(实际上,我们的内部项目推迟了从原先计划等待WildFly的4.2.x切换到7.x).欢迎新的想法和答案.

Dav*_*ave 24

我已经从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,您将需要以不同方式配置它们.

一些有用的资源是:

http://java.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多得多.


McD*_*ell 9

我只能说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社区论坛上得到更好的答案.


Phi*_*all 5

我们从JBoss AS 5升级到JBoss AS 7,并且正在向WildFly AS 8.1发展.现在我们无法迁移到8,因为没有MQ Series JMS 2 RAR.

一些差异:

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

我们必须做的变更:

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

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