如果應用程式所提供(或使用的程式庫所提供)的類別在 Liberty 中也有,依預設,會使用 Liberty 中的類別。如果要變更這個情況,讓應用程式使用這些類別的替代版本,您必須在 server.xml 檔或某個併入檔中配置應用程式。
關於這項作業
如果 Web 應用程式含有在伺服器執行時期環境中也存在的類別,您可能會想控制應用程式對於這些類別分別會使用哪個副本。
比方說,如果在應用程式和伺服器執行時期環境中都存在各類別的不同版本,您必須確定會使用包裝在應用程式中的版本。
依預設,所有 Java™ EE 應用程式都會使用 Liberty 執行時期環境中的類別。您可以利用類別載入器配置的 delegation 屬性來置換這個行為。
這個配置專用於特定應用程式,或用於可選給應用程式使用的共用程式庫。
範例
在下列範例中,稱為 Scholar 的應用程式需要使用它提供(或使用的程式庫所提供)的類別,而不是使用 Liberty 所提供之類別的副本。
- 當類別是包裝在應用程式之中,請利用 server.xml 配置檔或它包含的某個檔案中的 classloader 元素,來置換預設的 parentFirst 委派行為:
<application id="" name="Scholar" type="ear" location="scholar.ear">
<classloader delegation="parentLast" />
</application>
這會告訴應用程式類別載入器,必須先在應用程式及其關聯程式庫中尋找類別,然後才查看 Liberty 類別。
- 當類別包裝在共用程式庫之中,依照下列方式,新增 delegation 屬性到配置成會使用共用程式庫的 classloader 元素中:
<application id="" name="Scholar" type="ear" location="scholar.ear">
<classloader delegation="parentLast" commonLibraryRef="mySharedLib"/>
</application>
<library id="mySharedLib">
<fileset dir="${server.config.dir}/myLib" includes="*.jar" />
</library>
您也可以在應用程式中,使用專用程式庫的 privateLibraryRef 屬性。
請參閱 在多個 Java EE 應用程式之間共用程式庫。