カスタム blueprint 名前空間ハンドラー

OSGi Enterprise Specification リリース 5 で導入された Blueprint Container 仕様は、Java™ コードを複雑にすることなく、OSGi 環境で動的アプリケーションを作成するための単純で簡単なプログラミング・モデルを提供します。

OSGi Enterprise Release 仕様について詳しくは、OSGi 仕様のダウンロードを参照してください。

Blueprint Container 仕様は、OSGi 用の依存性の注入フレームワークを定義しています。サービスが随時使用可能および使用不可になる可能性がある OSGi の動的な性質を処理するために設計されています。また、この仕様は、Plain Old Java Object (POJO) と連携するように設計されており、同じオブジェクトを OSGi フレームワークの内外で使用できます。 アプリケーションの各種コンポーネントを定義および記述する Blueprint XML ファイルが、Blueprint プログラミング・モデルにとって非常に重要になります。この仕様は、実行中のアプリケーションを形成するために、どのようにコンポーネントがインスタンス化され、一緒に接続されるのかを規定しています。 詳しくは、WebSphere Developer Tools 資料の OSGi Blueprint コンテナー 仕様に関する情報を参照してください。

blueprint ランタイムで blueprint バンドルの blueprint コンポーネントを処理するために、各 blueprint バンドルに、blueprint XML ファイルが含まれている必要があります。 標準 blueprint エレメントは、OSGi blueprint 仕様によって定義されており、すべての blueprint XML 文書で必須です。デフォルトの文書名前空間を http://www.osgi.org/xmlns/blueprint/v1.0.0 に設定します。例:
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
標準 XML ルールを使用して、接頭部を付けたエントリーとして、またはカスタム XML エレメント内で直接、他の名前空間を blueprint に追加できます。 このような名前空間は、トップレベルで追加するか、カスタム XML エレメントでインライン化できます。有効な XML の場合、正しく解析されます。トップレベル blueprint エレメントでの定義の例:
<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 ランタイム実装は、OSGi Applications for Liberty に含まれている Blueprint バンドルをサポートするために使用されます。詳しくは、『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 または URICollection、あるいは String または URI の配列のいずれかにすることができます。

blueprint ランタイムは、blueprint 記述子を 2 回解析します。最初のパスは高速であり、blueprint バンドルで使用されるすべての名前空間のみを検出します。blueprint バンドルで非標準名前空間が使用されている場合、blueprint コンテナーは、カスタム名前空間ごとに、OSGi サービス・レジストリーで NamespaceHandler サービスを検出しようとします。NamespaceHandler サービスは、OSGi サービス・プロパティーを使用して処理できる各 XML 名前空間を公開します。blueprint ランタイムは、バンドル内で使用されているすべてのカスタム名前空間の NamespaceHandler サービスが見つかるまで、blueprint XML を解析しません。すべてのカスタム名前空間の NamespaceHandler サービスが見つからない限り、blueprint コンテナーはバンドルを処理できません。この結果として、NamespaceHandler が存在しない場合に、blueprint コンテナーは無期限に待機する可能性があります。 この状態が発生した場合、blueprint コンテナーは警告をログに発行します。blueprint パーサーは、blueprint XML ファイルの解析を開始すると、標準 blueprint エレメントを解析します。パーサーはカスタム・エレメントに達すると、カスタム・エレメントの名前空間のサポートを公開した NamespaceHandler を呼び出します。ここで、NamespaceHandler はカスタム・エレメントの情報を処理するか、ランタイム blueprint モデルを変更するか、他の任意の操作を実行できます。名前空間定義にタイプ入力エラーがある場合、blueprint はほぼ確実に開始できません。

カスタム NamespaceHandler サービスは、Liberty フィーチャー・バンドル や OSGi アプリケーション・バンドルなど、 Liberty で実行されている任意のバンドルで提供できます。


トピックのタイプを示すアイコン 参照トピック



タイム・スタンプ・アイコン 最終更新: Monday, 5 December 2016
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-libcore-mp&topic=rwlp_blueprint_namespace_handler
ファイル名: rwlp_blueprint_namespace_handler.html