J2EE Shared Libraries是Weblogic Server 9.0(下簡稱WLS9)的一個新特性。通過J2EE Shared Libraries可以將一個J2EE模塊共享給其他企業應用(EAR包或EAR包的展開目錄)的J2EE模塊使用。J2EE Shared Library可以是任何類型的J2EE模塊,但推薦設計成企業應用格式。此外還有一種J2EE 1.4的標準共享庫方式,稱為 Optional Packages。Optional Packages提供和J2EE Libraries類似的方式將一個JAR文件共享給多個應用。區別在于 Optional Packages是基于標準的,但不能被當作J2EE模塊使用。optional packages必須通過部署對應的JAR文件方式先被注冊到Domain。注冊好后可以在任意J2EE模塊中通過manifest files來引用這些JAR包。Optional packages和J2EE libraries的區別在于optional packages可以被任何J2EE模塊(EAR, JAR, WAR, or RAR 文檔)或其對應擴展的目錄結構引用。而J2EE libraries只能被企業應用引用。本文通過具體的說明將指導開發者熟悉這兩種共享方式,并獲得立竿見影的效果。
本文附件exercise包括J2EE Libraries 和 Optional Packages的練習代碼,可解壓到任意位置。需要預先安裝的軟件只有WLS9正式版,可以到www.bea.com.cn上免費下載。本練習可在能安裝WLS9的任何操作系統上完成,為了方便起見,文中僅以在Windows上為例。首先配置一個WLS Domain,記得用戶名和密碼要都設為weblogic,端口為7001。然后啟動該Domain,并啟動相應的Console。最后使用Domain/bin/setDomainEnv.cmd打開一個PRompt窗口,并把目錄切換到你解壓的文件的位置。這樣你就可以按照第五節和六節所述完成練習。假如想快速看一下練習結果,在solution中有已經配置好的兩個練習的代碼,部署后就可以測試。
共享模塊的核心:MANIFEST.MF文件
我們知道在Weblogic上部署的任何J2EE模塊的根目錄中可以有一個名為META-INF的目錄,你可以在一個J2EE模塊的META-INF目錄下創建一個名為MANIFEST.MF文件,來指定這個J2EE模塊的版本。MANIFEST.MF文件是一個純文本文件,格式大概如下:
Extension-Name: myOptionalPackage
Specification-Version: 0.9
Implementation-Version: 1
Extension-Name:可選。表示該庫或包的名字。主調應用調用這個應用時需要匹配這個值。假如你不設置這個值,系統將自動使用部署名。
Specification-Version:可選。定義這個庫或包的規格版本。主調應用可以為共享模塊隨便指定一個規格版本。假如這個規格版本不可用,則主調應用不能被部署。規格參數可以有兩種格式。第一種使用主從版本格式,大小版本號用點分割,如"9.0.1.1"。第二種使用文本格式,如 "9011Beta"。假如使用主從版本號格式,主調應用可以配置為共享的模塊吻合一個特定版本,或者一個最小版本,或者一個最新的版本額。假如使用文本格式,主調應用必須和共享模塊的版本號嚴格吻合。
Implementation-Version:可選。定義這個庫或包代碼的執行版本號。必須在已經定義了規格版本的情況下才能定義執行版本。執行版本使用和規格版本相同的格式。
假如你不使用MANIFEST.MF文件或者有些條目沒有指定,可以在命令行中通過weblogic.Deploy進行部署的時候由參數來設置。在后面的練習中我們將具體了解如何使用MANIFEST.MF將一個J2EE應用設計為J2EE Libraries或Optional Packages。
J2EE Libraries and Optional Packages比較
Optional packages和J2EE Libraries有如下共同點:
1。在部署的時候都注冊到Domain上。
2。都支持可選的執行版本和規格版本字符串。
3。引用J2EE libraries and optional packages的應用可以指定共享文件的版本。
Optional packages和J2EE Libraries有如下區別:
1。Optional package是普通的JAR文件,而 J2EE libraries可以是普通JAR文件,J2EE應用,或獨立的J2EE模塊。J2EE libraries可以包括有效地J2EE或WLS部署描述符,而optional package JAR中的任何部署描述符都被忽略了。
2。任何J2EE應用或模塊可以通過META-INF/MANIFEST.MF引用 optional package。而只有企業應用可以通過weblogic-application.xml引用J2EE library 。
3。Optional packages可以引用其他Optional packages,而J2EE libraries不能引用其他J2EE libraries。
最佳實踐
1。假如需要共享J2EE模塊給多個企業應用應使用J2EE Libraries。
2。假如要部署獨立的J2EE模塊作為共享庫,應該把模塊打包到企業應用中。這樣可以防止潛在的URI沖突。因為獨立模塊庫的URI來源于不署名。所以在部署時指定一個部署名,當其他應用引用它時作為URI。
新聞熱點
疑難解答