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