從 JBoss v4.x 遷移到 IBM WAS Community Edition v2.x

CloudSpace發表於2009-12-16
轉自:http://www.ibm.com/developerworks/cn/websphere/library/techarticles/0910_jain/0910_jain.html

簡介

Java Enterprise Edition 5(Java™ EE5™)是面向開發和執行分散式、多層 Java 應用程式的程式設計平臺。已開發的應用程式執行在其中一個 Java EE 容器上。兩個容器實現相同的規範,因此可以無縫地將針對一個應用伺服器開發的應用程式遷移到另一個應用伺服器。然而,由於類載入器機制、應用程式打包方式、本機程式碼的使用以及部署計劃等方面存在差異,這一過程並非一帆風順。

在本文中,我們將介紹兩種應用伺服器及其架構方面的異同。遷移文章 一節介紹將針對 JBoss Application Server 開發的應用程式遷移到 WebSphere Application Server Community Edition(此後簡稱為 Community Edition)所涉及的步驟。首先,我們將從較高的層面介紹這兩種應用伺服器。

JBoss 應用伺服器是 Java Enterprise Edition 5 (Java EE5) 相容應用伺服器,用於應用程式開發、測試和部署,由 Red Hat 建立。注意,到目前為止,JBoss v5 一直在 jboss.org 上釋出,但是 RedHat JBoss v5 尚未完整發行。JBoss v5 的遷移應該是類似的。

Community Edition 是 Java Enterprise Edition 5 (Java EE5) 認證的基於 Apache Geronimo 的應用伺服器。它經過預打包,包含以下開源元件(僅列舉其中一部分):

  • Apache Derby,用作預設的資料庫伺服器
  • Apache OpenJPA,用作持久化引擎
  • Apache OpenEJB,用作 EJB 容器
  • Apache Tomcat,用作 Web 容器
  • Active MQ,用作訊息傳遞提供者

Geronimo 核心是 Geronimo 的核心,它充當粘合劑的作用,可以插入任何開源元件。

Community Edition 的一些高階特性包括:

  • Java 支援 - IBM 和 Sun Java。
  • 平臺支援 - SUSE、Ubuntu、Red Hat 和 Asianux Linux、AIX、Sun Solaris、Windows XP、2003、2008 和 Vista。
  • 資料庫支援 - Apache Derby、IBM DB2、IBM Informix、MySQL、Oracle 和 Microsoft SQL Server(任何 JDBC 相容的資料庫都可以使用)。
  • 訊息傳遞支援 - Apache ActiveMQ、WebSphere MQ。
  • 目錄伺服器支援 - Apache Directory Server、IBM Tivoli Directory Server、Microsoft Active Directory Server、Open LDAP Server 和 Sun One Directory Server。
  • 記憶體佔用少 - 可以很輕鬆地開始使用 Community Edition —— 下載只佔用約 100 MB,因此開發人員可以輕鬆下載和使用它。Community Editions 的輕巧性也意味著它可以很容易地嵌入到更大的堆疊中,這可以幫助客戶和 ISV 使用 Community Edition 構建完整的解決方案。
  • 集中式配置和控制 - Community Edition 通過管理控制檯提供了監控支援。使用這一特性,您可以對多臺伺服器收集統計資料和效能資料,並以圖形化方式將它們顯示給使用者。
  • 面向 WebSphere Application Server 家族的可移植性 - 您對 WebSphere Application Server Community Edition 的投資將隨時間而增值,因為開源社群將日益成熟並不斷創新。同樣,WebSphere Application Server Community Edition 使您能夠訪問完整的、可靠的 WebSphere 中介軟體產品組合。當您的需求隨時間增加時,IBM 可以通過 WebSphere Application Server 配置提供高階的功能,比如 SOA。
  • 免費產品許可 - 免費用於開發、測試和部署。
  • 30 天免費試用支援 - Community Edition 提供了 30 天免費試用支援,使用者因此可以感受 IBM 支援的優勢。
  • Eclipse 外掛,用於應用程式開發、測試和部署。
  • 開放論壇,可以回答您的所有問題。您可以在 IBM developerWorks 論壇提出任何有關 Community Edition 的疑問。

    架構異同

    下面的小節展示 Community Edition 和 JBoss Application Server 的架構圖。


    圖 1. Community Edition 的架構圖
    顯示 Community Editiona 的架構


    圖 2. JBoss Application Server 的架構圖
    顯示 JBoss 的架構

    表 1 展示了 JBoss Application Server 和 Community Edition 在架構方面的異同:


    表 1. JBoss 和 Community Edition 特性對比
    特性 JBoss Community Edition
    Enterprise Java Beans (EJB) 支援 EJB 3.0 規範 支援 EJB 3.0 規範
    Java Connector Architecture (JCA) 支援 JCA 1.5 規範 支援 JCA 1.5 規範
    Java Servlets 支援 Servlets 2.5 規範 支援 Servlets 2.5 規範
    Java Server Pages (JSP) 支援 JSP 2.1 規範 支援 JSP 2.1 規範
    Java Server Faces (JSF) 支援 JSF 1.2 規範 支援 JSF 1.2 規範
    事務 支援 XA,本地,無事務 支援 XA,本地,無事務
    JTA 實現 通過 JBoss JTA 支援 JTA 通過 ObjectWeb JOTM 和 HOWL 提供事務支援
    連線池和管理 JBossCX 框架 通過 Codehaus TranQL 定製 Geronimo 程式碼
    WebContainer Apache Tomcat 6.0 Apache Tomcat 6.0.20
    EJB 容器 JBoss 自有實現 Apache OpenEJB
    永續性提供者 Hibernate Apache OpenJPA
    EJB 應用程式 Deployment Descriptor 在 jboss.xml 中配置 在 openejb-jar.xml 中配置
    Web 應用程式部署描述符 在 jboss-web.xml 中配置 在 geronimo-web.xml 中配置
    EAR 應用程式部署描述符 在 jboss-app.xml 中配置 在 geronimo-application.xml 中配置
    JPA 部署描述符 在 persistence.xml 中配置 在 persistence.xml 中配置

    常見遷移問題

    本節介紹您可能會遇到的最常見遷移問題。

    Java EE 實現差異

    在遷移過程中,我們會遇到由於供應商在解釋 Java EE 規範方面的差異而引起的問題。比如,一些應用伺服器在驗證 Java EE 應用程式方面並沒有 WebSphere 產品家族那樣嚴格,因此有時部署描述符就會無法通過驗證。另一個例子就是在 JSP 中使用單引號和雙引號在 WebSphere 產品家族編譯期間會出錯。

    與類載入器相關的問題

    Java 類載入器負責定位和載入類。應用伺服器類載入器非常複雜,因此跟蹤和解決這些問題也變得十分困難。每個 Java EE 應用伺服器都使用類載入器的定製實現,由於 Java EE 規範目前並未覆蓋類載入器。例如,Community Edition 具有一個父-子類載入器結構,而 JBoss 使用一種統一的類載入器方法。

    共享庫

    這些庫可以用於多個應用程式或整個伺服器。共享庫位於不同的位置,並且其配置也因伺服器而異。例如,在 Community Edition 中,可以有幾種方法來配置共享庫:

    • 在應用伺服器目錄中,向部署計劃新增對共享庫的依賴關係。
    • 在應用伺服器目錄的外部,向部署計劃新增 GBean。
    • 在 JBoss 中,在特定於 JBoss 的部署計劃中為庫目錄新增一個條目。

    繫結庫

    每個平臺都捆綁了一組獨特的框架和庫,例如,Apache Xerces 和 Apache Xalan。這些庫的版本和類載入器對於每個平臺都是不同的。

    部署描述符

    Java EE 規範並沒有涵蓋應用程式部署和配置的所有方面。這就是我們使用特定於供應商的部署描述符的原因。每個應用伺服器使用一組不同的檔案集合;這是因為它們以不同的方式實現並具有不同的特性集。如表 1 所述,JBoss 使用的部署計劃的名稱與 Community Edition 使用的部署計劃的名稱不同。例如,JBoss 將其 Web 應用程式部署描述符命名為 jboss-web.xml,而 Community Edition 將其稱為 geronimo-web.xml。在用於驗證每個部署計劃的模式定義方面,可能還存在許多差異。

    應用程式打包方式

    打包方式對於移植和遷移十分重要。每個應用程式都使用不同的方式打包。這一點,再加上每個應用伺服器中的不同類載入器實現,會為遷移帶來潛在的問題。要避免這些問題,應當始終遵循 Java EE 規範,其中包含了有關應用程式打包方式的規範。應用程式通常被打包到一個 EAR 檔案,它可能由以下模組組成:

    • EJB

      包含 EJB 類檔案和部署描述符。

    • WAR

      包含部署描述符的 Web 應用程式模組。

    • JAR

      一個 JAR 檔案,包含其他模組和部署描述符用於 Java EE 應用程式客戶機的常用類。

    • RAR

      Resource Adapter 歸檔是一個 JAR 檔案,包含 J2C 架構的資源介面卡。

    使用原生程式碼

    Java 平臺允許通過 Java Native Interface (JNI) 使用本機程式碼,例如,使用 C 或 C++ 編寫的程式碼。使用本機程式碼會在遷移到不同作業系統時引發問題。例如,一個執行在 Windows 上的應用程式可能使用 .DLL 檔案,而當您遷移到 Linux 平臺時,同一個應用程式則會使用 .SO 檔案。

    JBoss Extensions

    JBoss 新增了一些特定於 JBoss 的伺服器擴充套件(JBoss Jars),以增強某些應用程式特性。這些擴充套件需要被解析為它們的 Java EE 規範。

    遷移文章

    下面這些文章中列出的遷移步驟可以幫助您理解本文討論的一些難題,並幫助您將 JBoss 應用程式遷移到 Community Edition。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/14789789/viewspace-622531/,如需轉載,請註明出處,否則將追究法律責任。

相關文章