使用WebSphere Integration Developer和WebSphere Process Server的二進位制Jar檔案

CloudSpace發表於2010-07-26
Grant D. Taylor, 顧問軟體工程師, IBM 簡介: 本文討論將二進位制 Jar 檔案整合到 WebSphere® Integration Developer 和 WebSphere Process Server 應用程式的多種方法。
 

簡介

我們有很多理由將二進位制 Jar 檔案整合到一個 WebSphere Integration Developer(以下簡稱為 Integration Developer)模組,或 WebSphere Process Server(以下簡稱為 Process Server)中用於執行的庫。可能需要將某個組織或第三方開發的一些現有 Java™ 資源加入到應用程式中。在 Integration Developer 和 Process Server 應用程式中使用二進位制 Jars 有多種方法和方面。可以將 Jars 嵌入在單一模組或者庫中使用,或者使用者想要在編輯時在模組和庫之間共享一個 Jar。當一個模組部署在伺服器上時,對 Jar 如何進行共享也有很多考量。

本文講述將一個 Jar 加入到 Integration Developer 應用程式,然後做出適當的設計和配置決定的不同方法。為了方便本文的講解,一個 Integration Developer 應用程式就是一個 Process Server 應用程式的同義詞。

 

在一個庫或模組內使用 Jar

使用二進位制 Jar 最簡單的例子就是在一個獨立的庫或者模組中使用它。要使用這種方法,只需將 Jar 複製並匯入到想要使用 Jar 的庫或模組中。為了說明這個設定,我們會使用一個簡單的 Integration Developer 應用程式。圖 1 顯示了將一個 Jar 檔案 mybinary.jar 複製到新建立的 Integration Developer模組 “MyModule” 中的結果。


圖 1. 複製到 MyModule 的 Jar 檔案
複製到 MyModule 的 Jar 檔案

Jar 檔案成為 Business Integration 檢視中的一個工件,同樣可以進行管理。Jar 工件可以執行常規操作,比如刪除、複製、貼上、移動,還有組操作。mybinary.jar 內的內容在模組內可用。作為一個例子,在一個模組中建立一個簡單的 Java 元件,顯示 Jar 內容的用法。清單 1 使用 Jar 中的類 SampleBinaryClass,顯示了 Java 元件實現中的介面操作方法的實現。


清單 1. Java 元件程式碼
				
public String operation1(String input1) {
	return new SampleBinaryClass().sampleMethod(input1);
}

現在對模組進行設定來使用 Jar 和 Jar 中的內容。設定很簡單,部署也可以由 Integration Developer 自動處理。Jar 會被自動複製到模組的備份 EAR 專案,並配置為一個通用 Jar。圖 2 顯示瞭如何複製 Jar 到 Integration Developer 工作空間內的備份 EAR 專案。


圖 2. 將 Jar 複製到 EAR 專案
將 Jar 複製到 EAR 專案

下載檔案

注意,在本文中提到的檔案可以 下載,且都使用 Integration Developer 6.2.0.2 建立。本說明適用於版本 6.1.x 到 7.x。專案交換檔案都能夠遷移到 Integration Developer V6.2.0.2 以後釋出的版本中。

在庫中使用 Jar 的步驟是完全一樣的。只需將 Jar 複製到庫中,這樣 Jar 可以在庫內可供隨意使用。Integration Developer 會深度搜尋一個模組依賴的所有庫,並將庫中所有的 Jar 複製到模組已生成的 EAR 專案。EAR 專案中 Jar 的存在允許它們被部署,這樣類在執行時也可以使用。可以下載模組設定的 專案交換檔案,名為 “JarInModule.zip”。

使用這種方法將 Jar 檔案加入到 Integration Developer 應用程式的主要好處就是,它極為簡單。Integration Developer 處理 Java 構建路徑的設定和備份 EAR 設定。您唯一需要做的就是把 Jar 複製到模組或庫中。但是如果許多模組和庫都需要使用一個 Jar 或一組 Jar 時,要怎麼辦?使用本節描述的方法,將 Jar 複製到每個模組或庫中可能會比較複雜,工作空間也會變得沒必要的大,更重要的是,對所有的 Jar 使用者釋出一個升級版的 Jar 也非常困難。下一節將會探討避免這些缺陷的方法。

 

在編輯時共享 Jar

如果一個 Jar 被許多模組或者庫使用,那麼這個 Jar 就需要在編輯時被共享。這就意味著工作空間中只有一個 Jar 的副本,所有的模組和庫將會引用惟一的副本。如果需要用到一個新版本的 Jar,那麼升級所有的模組和庫只需修改一個檔案。為了說明這個設定,例子中還會包括另一個模組 ModuleToo,它也需要用到 Jar。

您首先需要建立一個常規的 Java 專案來存放 Jar 檔案。在給定的 樣例 中,這個 Java 專案名為 “JarProject”。雖然樣例使用一個預設的配置,但您可以通過由 Java 開發工具支援的定製設定 Java 專案。圖 3 顯示了在原始模組 MyModule 和新模組 ModuleToo 中建立的 Java 專案。


圖 3. 新 Java 專案
新 Java 專案

WebSphere Integration Developer V6.0.x

在 Integration Developer 6.1 版本之前,在把 Jar 檔案複製到模組或者庫中之後會出現一個對話方塊。使用者可以觸發一個包含 Jar 的 Java 專案的生成。這是在這些版本中使用 Jar 的唯一受支援方法。

下一步就是把 Jar 檔案移動到 Java 專案(或者如果從頭開始,把 Jar 複製到 Java 專案中)中。您可以把 mybinary.jar 工件從 MyModule 中拖拽出來,然後將它放置到 JarProject 中來移動檔案。Java 專案現在需要將其構建路徑屬性升級,讓 Integration Developer 知道 Jar 的目的是成為可用 Java 的容器。為此,需要開啟 JarProject 的 Java Build Path 屬性頁面。在 Libraries 選項卡上,使用 Add Jars… 按鈕來新增 mybinary.jar 到設定中。圖 4 顯示新增了 Jar 之後的屬性頁面。


圖 4. Java 屬性頁面
Java 屬性頁面

最後一步就是開啟每個模組的依賴項編輯器,把 JarProject 作為一個依賴 Java 專案新增進去。圖 5 顯示了將 JarProject 作為一個模組的依賴項新增之後依賴項編輯器的狀態。


圖 5. 模組的依賴項編輯器
模組的依賴項編輯器

依賴 JarProject 的模組和庫現在能完全訪問 mybinary.jar 的內容,部署也能夠得到自動處理。Integration Developer 處理模組和庫的 Java 構建路徑配置,這樣就可以使用它所包含的 Jars。Integration Developer 還能確保將 Jars 作為通用 Jars 設定備份 JEE 專案。圖 6 顯示了將 JarProject 作為每個模組的依賴項新增之後,mybinary.jar 被自動複製到每個模組的備份 EAR 專案中。本節中的模組和庫可從 JarInJavaProject.zip 專案交換檔案中 下載


圖 6. 模組的備份 EAR 專案
模組的備份 EAR 專案

注意,JarProject 可以包含多個 Jar,它們都可見,而且部署在每個引用專案的庫或者模組中。這有助於有相關邏輯或用途的 Jar 集中在一起。包含 Jar 的專案可以在一個組織內共享。如果需要進行升級,那麼有新內容的 Integration Developer 構建流程中,所有的模組和庫都會被升級。同樣,您還可以向工作空間新增 Java 專案,從正在消費的模組或者庫中執行一個引用,以此來訪問所有的 Jar。這個設定的另一個功能就是,包含二進位制 Jar 的 Java 專案還可能包括編輯過的 Java 原始碼。為輸出已編輯原始碼,需要建立並部署一個單獨的 Jar,但是要使用類路徑上包含的 Jar 進行適當設定。因此,有可能包含一個基本的二進位制 Jar 和部分增值程式碼。它們可以存在於同一個包裝實體上。

圖 6 還概述了這種方法中所需注意的一點:在執行時仍然還有每個 Jar 的副本。每個 EAR 都包含一個副本,那麼如果將多個模組部署到一個生產伺服器中,那麼所有的模組都需要重構和重新部署。此外,如果共享的 Jar 很大,那麼就需要用到更多的伺服器資源,比如記憶體。最後一節將解釋如何在執行時共享 Jar。

 

在執行時共享一個 Jar

在 Integration Developer 應用程式中使用 Jars 的最後一個方面就是,如何在執行時在多個模組或者庫中共享同一個 Jar 副本。這個設定也是最難的,尤其從部署角度來說。

第一步就是停止 Integration Developer 將 Jar 新增到臨時 EAR 專案。僅當 Jar 在 Java 專案中時,這個動作才能完成,正如 上一節 所述。如果將 Jar 直接新增到一個模組或者庫中,就不可能在執行時共享一個 Jar。

在模組的依賴項編輯器中,只需開啟依賴項編輯器,選擇 JarProject,在 Advanced 部分取消選擇 Deploy with Module 核取方塊,如圖 7 所示。


圖 7. 取消選擇 Deploy with Module
取消選擇 Deploy with Module

取消選擇核取方塊以後,會出現一個對話方塊,解釋 Integration Developer 和 Process Server 不會再處理 Java 專案或者所包含的 Jar 的部署。它還包含一個到 操作指南 的連結,這些操作指南說明如何在伺服器中配置一個共享的 Jar。為了在執行時配置 Jar,需要選擇 Java 專案中每個獨立的 Jar,然後分別進行部署。如果 Java 專案包含任何原始碼,那麼就需要使用 Integration Developer 開發環境中的 Java 工具將 Java 專案匯出為 Jar 檔案。

繼續上面的例子,對 MyModule 進行配置使其 部署依賴項編輯器的 JarProject。請看備份 EAR 專案,您可以看到 Jar 並沒有包含其中,而且也因此不會被部署。圖 8 顯示了儲存依賴項編輯器之後 EAR 專案的狀態。


圖 8. 在執行時共享 Jar 的 EAR 專案
在執行時共享 Jar 的 EAR 專案
 

新增 Jars 的其他方法

如果您在 Integration Developer 中使用過使用者介面的 Java 部分,那麼很可能會使用一個給定模組或者庫的 Java Build Path 屬性頁面配置一個庫(外部或者內部)。然而,改變 Integration Developerowever 模組或者庫的 Java 屬性是不受支援的。Integration Developer 管理模組或者庫的 Java 屬性,所以任何對 Java 屬性的改變都可能在 Integration Developer 構建流程中被覆蓋。

另外,外部 Jar 引用不能在一個分散式開發環境中良好執行。開發團隊的每個成員都需要有每個 Jar 的副本,且可能更改消費模組和庫中每個 Jar 的絕對路徑。這些步驟繁瑣且易出錯。使用本文中的配置方法,您就只需要從團隊儲存庫系統檢視專案。如果您使用一個 Integration Developer 解決方案,那麼步驟就更簡單直接了。如果使用自動構建系統,您就可以使用同一個引數,而不必使用外部 Jar。

 

結束語

本文討論了將二進位制 Jar 檔案新增到 WebSphere Integration Developer 應用程式的所有受支援配置,強調了每種配置的優缺點,這樣當您使用 WebSphere Integration Developer 應用程式中的 Jar 檔案時,就可以幫助您儘可能地做出最佳決策。


 

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

相關文章