2011-06-01 157 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.