自訂藍圖名稱空間處理程式
「藍圖儲存器」是「OSGi 企業規格第 5 版」引進的規格,它提供一種簡單易用的程式設計模型,讓您在 OSGi 環境中建立動態應用程式,卻不會增加 Java™ 程式碼的複雜性。
如需「OSGi 企業版本」規格的相關資訊,請參閱 OSGi 規格下載。
「藍圖儲存器」規格定義了 OSGi 相依關係注入架構。其設計旨在處理 OSGi 的動態性,其中,服務可隨時變成可用和無法使用。規格亦設計成處理一般舊 Java 物件 (POJO),因此,相同的物件可在 OSGi 架構之內和之外使用。藍圖 XML 檔是定義和說明應用程式的各種元件,可說是藍圖程式設計模型的關鍵。規格會說明如何將元件實例化和串聯在一起,來構成一個執行中的應用程式。如需相關資訊,請參閱 WebSphere Developer Tools 說明文件中的「OSGi Blueprint 儲存器規格」相關資訊。
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0">
舉例來說,位於自訂元素行內:<transaction method="*" value="Required"
xmlns:tx="http://aries.apache.org/xmlns/transactions/v1.0.0"/>
Apache Aries 專案提供的藍圖執行時期實作用來支援藍圖軟體組,這些軟體組包含在適用於 Liberty 的 OSGi 應用程式中。如需相關資訊,請參閱 Apache Aries。Aries 藍圖執行時期提供一種延伸機制,稱為名稱空間處理程式。名稱空間處理程式提供一個處理器,來處理自訂藍圖延伸或名稱空間。名稱空間處理程式實作 org.apache.aries.blueprint.NamespaceHandler 介面,必須登錄在 osgi.service.blueprint.namespace 服務內容相關聯的 OSGi 服務登錄中。此內容表示這個處理程式可以處理的名稱空間 URI。例如:http://aries.apache.org/xmlns/transactions/v1.0.0。服務內容值可以是單一 String 或 URI,或 Collection,或是 String 或 URI 陣列。
藍圖執行時期會剖析藍圖描述子兩次。第一次剖析迅速,並且只會尋找藍圖軟體組使用的每一個名稱空間。如果藍圖軟體組使用非標準名稱空間,藍圖儲存器會嘗試對每一個自訂名稱空間,尋找 OSGi 服務登錄中的 NamespaceHandler 服務。NamespaceHandler 服務會使用 OSGi 服務內容,來通告它可以處理的每一個 XML 名稱空間。必須先針對軟體組內使用的每一個自訂名稱空間尋找 NamespaceHandler 服務,藍圖執行時期才會剖析藍圖 XML。除非在 NamespaceHandler 服務中可以找到每一個自訂名稱空間,否則藍圖儲存器無法處理軟體組。此結果意味著如果 NamespaceHandler 不存在,藍圖儲存器會無止盡地等待。如果遇到這種狀況,藍圖儲存器會在日誌中發出警告。當藍圖剖析器開始剖析藍圖 XML 檔時,它會剖析任何標準藍圖元素。當剖析器抵達自訂元素時,剖析器會對外呼叫通告支援自訂元素名稱空間的 NamespaceHandler。此時,NamespaceHandler 有機會處理自訂元素中的資訊,修改執行時期藍圖模型,或執行其他任何作業。只要任何名稱空間定義中出現輸入錯誤,藍圖幾乎必會啟動失敗。
在 Liberty 中執行的任何軟體組都可提供自訂 NamespaceHandler 服務,包括「Liberty 特性」軟體組和「OSGi 應用程式」軟體組。