2011-06-01 124 views
31

请假定我不需要担心开发时间和成本:我对一般技术优势(性能改进?改进的API?)和新功能感兴趣。从JBoss 4.2.x升级到JBoss 5.x,6.x,7.x和WildFly 8.x的好处(和技巧)?

我目前正在使用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)。新的想法和答案是受欢迎的。

回答

24

我已经升级,从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,则需要对它们进行不同的配置。

一些有用的资源:

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

+0

感谢您的回答。我认为你是最完整的,但我希望多一点。我向你们提供了接受的答案和赏金以及+1票。 – haylem 2011-06-09 18:35:20

+0

如果您想更新您对JBoss 8的回答,我已经为其他信息添加了奖励。 – haylem 2014-03-20 12:43:39

+0

+1为Dilbert :) – 2014-03-21 12:58:52

9

我只能从与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(在写作时的第三个测试版)。

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

+0

+1。感谢你的回答。 – haylem 2011-06-09 18:35:49

0

只想把这个给谁可能升级到最新之后面临PermGen的膨胀问题,任何人的注意。 JBoss-6 Microcontainer尝试通过在启动时从类路径中的所有JAR加载类来扫描Jboss特定的注释。这会导致PermGen在开始加载所有不需要的类时膨胀。为了减少扫描的数量,Microcontainer通过jboss-scanning.xml提供了另一个描述符挂钩。 将这个'jboss-scanning.xml'添加到WARs中的WEB-INF中,并将'jboss-scanning.xml'添加到EAR内部的META-INF中。

<scanning xmlns="urn:jboss:scanning:1.0"> 

    <!-- Purpose: Disable scanning for annotations in contained deployment. --> 

</scanning> 
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 Series RAR,而无需太多调整。我们的实时数据集大于200 MB。
  • 默认情况下deployments文件夹为空
  • XNIO的(缺乏)质量很可怕。 7。x它只用于EJB远程处理,我们碰到了几个显示停止程序错误(死锁,双重释放,套接字句柄泄漏......)。在8.x中,它用于servlet而不是Tomcat。底层还有很多非常基本的servlet错误被修复。

的变化,我们必须做我们的应用程序:

  • 变化JNDI名称EE 6个规范的名称
  • 从JBoss缓存到Infinispan的(我们的代码部分
  • 迁移已经迁移到平API ,一些部分仍然使用树API)
  • 安全性稍微不够灵活(您不能再修复已通过身份验证和未经身份验证的调用)
  • 一些依赖远程JNDI细节的可怕代码
  • 的EJB客户端的配置是不同的
  • 你的脚本安装,部署,启动,停止的......
  • 的ExternalContext走了,我们不得不
  • 我们更换的MBean用不同的方法来代替它在特区与@Startup的EJB
  • 一些丑陋的黑客对茧

的AS 7.x版系列已经与EAP系列仅可修正错误的很多。如果你想使用7.x而不是8.x,我们强烈建议你购买EAP 6.