自訂藍圖名稱空間處理程式

「藍圖儲存器」是「OSGi 企業規格第 5 版」引進的規格,它提供一種簡單易用的程式設計模型,讓您在 OSGi 環境中建立動態應用程式,卻不會增加 Java™ 程式碼的複雜性。

如需「OSGi 企業版本」規格的相關資訊,請參閱 OSGi 規格下載

「藍圖儲存器」規格定義了 OSGi 相依關係注入架構。其設計旨在處理 OSGi 的動態性,其中,服務可隨時變成可用和無法使用。規格亦設計成處理一般舊 Java 物件 (POJO),因此,相同的物件可在 OSGi 架構之內和之外使用。藍圖 XML 檔是定義和說明應用程式的各種元件,可說是藍圖程式設計模型的關鍵。規格會說明如何將元件實例化和串聯在一起,來構成一個執行中的應用程式。如需相關資訊,請參閱 WebSphere Developer Tools 說明文件中的「OSGi Blueprint 儲存器規格」相關資訊。

每一個藍圖軟體組都必須包含一個藍圖 XML 檔,以便讓藍圖執行時期處理軟體組的藍圖元件。標準藍圖元素由 OSGi 藍圖規格定義,且每一個藍圖 XML 文件中都要有該元素。它將預設文件名稱空間設為 http://www.osgi.org/xmlns/blueprint/v1.0.0,例如:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
可以使用標準 XML 規則,在藍圖中新增其他名稱空間,作為字首項目,或直接放在自訂 XML 元素內。這些名稱空間可以新增到最上層,或是位於自訂 XML 元素行內。如果是有效 XML,則表示它已正確剖析。舉例來說,定義在最上層藍圖元素中:
<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。服務內容值可以是單一 StringURI,或 Collection,或是 StringURI 陣列。

藍圖執行時期會剖析藍圖描述子兩次。第一次剖析迅速,並且只會尋找藍圖軟體組使用的每一個名稱空間。如果藍圖軟體組使用非標準名稱空間,藍圖儲存器會嘗試對每一個自訂名稱空間,尋找 OSGi 服務登錄中的 NamespaceHandler 服務。NamespaceHandler 服務會使用 OSGi 服務內容,來通告它可以處理的每一個 XML 名稱空間。必須先針對軟體組內使用的每一個自訂名稱空間尋找 NamespaceHandler 服務,藍圖執行時期才會剖析藍圖 XML。除非在 NamespaceHandler 服務中可以找到每一個自訂名稱空間,否則藍圖儲存器無法處理軟體組。此結果意味著如果 NamespaceHandler 不存在,藍圖儲存器會無止盡地等待。如果遇到這種狀況,藍圖儲存器會在日誌中發出警告。當藍圖剖析器開始剖析藍圖 XML 檔時,它會剖析任何標準藍圖元素。當剖析器抵達自訂元素時,剖析器會對外呼叫通告支援自訂元素名稱空間的 NamespaceHandler。此時,NamespaceHandler 有機會處理自訂元素中的資訊,修改執行時期藍圖模型,或執行其他任何作業。只要任何名稱空間定義中出現輸入錯誤,藍圖幾乎必會啟動失敗。

在 Liberty 中執行的任何軟體組都可提供自訂 NamespaceHandler 服務,包括「Liberty 特性」軟體組和「OSGi 應用程式」軟體組。


指示主題類型的圖示 參照主題



「時間戳記」圖示 前次更新: 2016 年 11 月 30 日
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_blueprint_namespace_handler
檔名:rwlp_blueprint_namespace_handler.html