產品延伸
您可以撰產品延伸來展開 Liberty 設定檔的功能。
您可以撰寫您自己的 Liberty 特性,將它們安裝在現有的 Liberty 設定檔伺服器中,或將它們包裝起來,以便交付給您的使用者。
Liberty 設定檔提供了各種系統程式設計介面 (SPI),供您用來延伸執行時期環境;您也可以使用更進階的特性,例如,以程式設計的方式,從您的 Java™ 應用程式操作 Liberty 設定檔伺服器。
產品延伸
產品延伸是一個在磁碟上的目錄,結構類似於 Liberty 設定檔安裝目錄 ${wlp.install.dir}。 它是透過 ${wlp.install.dir}/etc/extensions 目錄中稱為 extension-name.properties 的檔案,而定義到 Liberty 安裝架構中。 之後,會利用產品延伸目錄的內容來延伸 Liberty 設定檔。 多重產品延伸可以安裝在一起,但它們必須有唯一名稱;這是透過內容檔命名來強制施行。 預設產品延伸位置 ${wlp.user.dir}/extension 不需要內容檔;這個位置下的內容會自動偵測,執行時期會將它識別為 "usr" 產品延伸。
產品延伸通常包含一或多個 Liberty 特性,但任何內容都有可能延伸 Liberty 設定檔環境,例如,Script 或資源。

com.ibm.websphere.productId=your_product_id
com.ibm.websphere.productInstall=absolute_or_relative_file_path
com.ibm.websphere.productId=org.acme.supergui
com.ibm.websphere.productInstall=supergui/wlp-ext
特性
Liberty 特性由一個定義檔(特性資訊清單)及一個 OSGi 軟體組集合組成,這些 OSGi 軟體組提供對應於 Liberty 設定檔執行時期環境中之特定功能的類別和服務。
利用 Liberty 特性來取代一般應用程式的實務
- 特性是透過特性管理程式配置來控制,因此,會將它們和使用者應用程式分開管理。
- 特性碼可以存取 Liberty 設定檔 SPI,從而能夠加深與執行時期環境的整合。
- 特性可以從 server.xml 檔接收使用者指定的配置,並將它們的配置設定顯現在開發工具中,工具不需進行任何改變。
- 特性很容易彼此顯現類別和服務,以及向使用者應用程式顯現類別和服務。
- 特性可以是極輕量型,不具備任何應用程式儲存器相依關係。
- 特性可用來擴增特定程式設計模型。 比方說,「使用者特性」可以新增對於自訂 Blueprint 名稱空間處理常式的支援,或新增 Blueprint 註釋到 OSGi 應用程式設計模型中。
開發簡式特性
請參閱手動開發 Liberty 特性、利用開發人員工具來建立 Liberty 特性,以及Liberty 特性資訊清單檔。
在伺服器中使用特性
如果要在 Liberty 設定檔伺服器中使用使用者撰寫的特性,您必須將它安裝在產品延伸目錄中。 這可能是預先定義的「使用者產品延伸」位置,或是在 Liberty 設定檔安裝目錄之外的一項延伸。 之後,您可以新增特性名稱到伺服器配置中。
使用者產品延伸是一個預先定義的目錄,伺服器在這個目錄中尋找其他特性。 特性定義 .mf 檔必須複製到 ${wlp.user.dir}/extension/lib/features 目錄中,軟體組 .jar 檔必須複製到 ${wlp.user.dir}/extension/lib 目錄中。
使用者撰寫的特性會依照產品特性的相同方式新增到伺服器配置中。 為了避免不同提供者的特性名稱發生衝突,您必須將延伸名稱附加到產品延伸中之各項特性的字首。 usr/extension/lib 目錄中的特性,預設字首是 usr:。
<featureManager>
<feature>usr:simple-1.0</feature>
</featureManager>
<featureManager>
<feature>myExt:myFeature</feature>
</featureManager>
當您啟動伺服器時,特性管理程式會偵測到這個特性,軟體組會安裝在 OSGi 架構中並予以啟動。
另請參閱 新增及移除 Liberty 特性 和 特性管理。
以程式設計方式,從應用程式使用特性
特性可以向應用程式顯現類別和服務。
如果要顯現 Java 類別供應用程式使用,您必須在特性資訊清單的 IBM-API-Package 標頭中列出各個類別套件。在 IBM-API-Package 標頭中列出類別套件,會使應用程式類別載入器能夠見到這些類別。 API 套件的可見性可以透過 API 可見性類型來進行控制。 請參閱指定 Liberty 特性專案的 API 和 SPI 套件。
如果要將服務提供給 OSGi 應用程式使用,您必須將它們列在特性資訊清單的 IBM-API-Service 標頭中。 特性會提供 OSGi 服務,以便您以程式設計方式,從應用程式參照這些服務。
服務通常應該登錄於 OSGi 服務登錄 (SR) 中,讓應用程式(或其他特性)能夠找到它們。 OSGi 應用程式和其他特性可以從 SR 執行直接查閱,也可以利用 Blueprint 或「OSGi 宣告式服務」之類的功能來注入它們的服務相依關係。 Java EE 應用程式更有可能透過 JNDI 找到服務;在 Liberty 設定檔中有一項 SR 和 JNDI 的聯合,可供 Java EE 應用程式利用 JNDI 在 SR 中尋找服務。如需相關資訊,請參閱使用 OSGi 服務登錄。
將特性顯現為 Web 應用程式
如果要將 Liberty 特性顯現為 Web 應用程式,您可以將特性中的 OSGi 軟體組發佈為 Web 應用程式軟體組 (WAB)。 除了軟體組所需要的 OSGi 標頭,您還可以利用 Web-ContextPath 標頭來指定 Web 應用程式環境定義路徑。
例如:
Web-ContextPath: myWABapp
Bundle-ClassPath: WEB-INF/classes
配置注入和處理
使用特性的主要好處之一,是使用者可以很容易在 server.xml 檔(以及併入檔)中配置它們。 Liberty 設定檔核心會監視及剖析配置檔,每當有了改變,產生的內容集可以注入相關的元件中。
Liberty 設定檔配置由核心中的「OSGi 配置管理 (CA)」服務來管理,可以根據這個規格來進行存取。 配置內容集用持續保存的身分 (PID) 來識別,這個身分用來將 server.xml 檔中的元素關聯於為了接收內容而登錄的元件。
<com.acme.console color="blue" size="17"/>
您的特性會收到下列內容:- color="blue"
- size="17"
您可以利用「OSGi meta 類型」描述子,選擇性地提供說明配置內容的 meta 資料。 使用描述子會使您的配置 meta 資料併入到 Liberty 設定檔所產生,並由「開發人員工具」使用的配置綱目中,因此,當應用程式開發人員配置其伺服器時,您的配置內容會自動呈現。
如需接收和說明配置內容的詳細資料,請參閱讓服務接收配置資料。
Liberty 設定檔中的宣告式服務
特性越大、越複雜,通常就會因使用「OSGi 宣告式服務 (DS)」而受益,特性能夠由多重服務組成,且可以管理相依關係和配置內容的注入。 使用 DS 容許延遲啟動服務,將 Java 類別延遲到使用服務時才載入,並根據相依關係來安排啟動服務的順序。 Liberty 設定檔產品中的大部分特性都由 DS 管理。
另請參閱 利用 OSGi 宣告式服務來撰寫進階特性。