在多個 Java™ EE 應用程式之間,可以共用程式庫。
所有應用程式都可以在執行時期使用相同的類別,或者說,各應用程式可以使用它自己從相同位置載入的這些類別的個別副本。
關於這項作業
在下列範例中,稱為
Alexandria 的程式庫由兩個檔案組成:
- alexandria-scrolls.jar 和
- commons-lang.jar
稱為
Scholar 的應用程式和稱為
Student 的應用程式執行於稱為
Academy 的伺服器,兩者都必須存取這個程式庫。
程序
- 在 ${WLP_USER_DIR} 目錄之下的 servers/Academy 目錄中,建立一個 mylib/Alexandria 目錄。
例如:wlp/usr/servers/Academy/mylib/Alexandria。
- 將 alexandria-scrolls.jar 和 commons-lang.jar 檔複製到新資料夾中。
- 配置應用程式的類別載入,以便載入 Alexandria 程式庫。
在
server.xml 檔或某個併入檔中,新增下列程式碼來定義程式庫:
<library id="Alexandria">
<fileset dir="${server.config.dir}/mylib/Alexandria" includes="*.jar" scanInterval="5s" />
</library>
註: <library> 元素也可以取得含有逗點區隔的 <fileset> 元素 ID 清單之 filesetRef 屬性。
- 從應用程式參照程式庫,使這兩個應用程式共用程式庫的單一副本。
在
server.xml 檔或某個併入檔中,新增下列程式碼:
<application id="scholar" name="Scholar" type="ear" location="scholar.ear">
<classloader commonLibraryRef="Alexandria" />
</application>
<application id="student" name="Student" type="ear" location="student.ear">
<classloader commonLibraryRef="Alexandria" />
</application>
註: <commonLibraryRef> 元素可以採用逗點區隔的程式庫 ID 清單。
- 選擇性的: 配置另一個應用程式,使它擁有自己從相同 JAR 檔中載入的一組類別。
比方說,如果另一個稱為
Spy 的應用程式需要它自己的類別副本,可以使用磁碟上相同的實體檔案。
在
server.xml 檔或某個併入檔中,新增下列程式碼:
<application id="spy" name="Spy" type="war" location="spy.war">
<classloader privateLibraryRef="Alexandria" />
</application>
註: <privateLibraryRef> 元素可以採用逗點區隔的程式庫 ID 清單。