![[8.5.5.4 以降]](../ng_v8554.gif)
カスタム blueprint 名前空間ハンドラー
Enterprise OSGi 仕様リリース 5 で導入された Blueprint Container 仕様は、Java™ コードを複雑にすることなく、OSGi 環境で動的アプリケーションを作成するための単純で簡単なプログラミング・モデルを提供します。
Enterprise OSGi 仕様リリースについて詳しくは、OSGi 仕様のダウンロードを参照してください。
Blueprint Container 仕様は、OSGi 用の依存性の注入フレームワークを定義しています。サービスが随時使用可能および使用不可になる可能性がある OSGi の動的な性質を処理するために設計されています。また、この仕様は、Plain Old Java Object (POJO) と連携するように設計されており、同じオブジェクトを OSGi フレームワークの内外で使用できます。 アプリケーションの各種コンポーネントを定義および記述する Blueprint XML ファイルが、Blueprint プログラミング・モデルにとって非常に重要になります。この仕様は、実行中のアプリケーションを形成するために、どのようにコンポーネントがインスタンス化され、一緒に接続されるのかを規定しています。詳しくは、『OSGi Blueprint Container Specification』を参照してください。
<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 ランタイム実装は、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 または URI、Collection、あるいは 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 で実行されている任意のバンドルで提供できます。