サーブレット拡張インターフェース
拡張生成プログラムおよびハンドラーを使用すると、サーブレットおよびポートレット呼び出しの リモート・メッセージにコンテンツを追加できます。 サーブレット拡張は、フィルター概念を活用して、既存の振る舞いを変更することもできます。 リモート要求ディスパッチャー (RRD) 拡張フレームワークは、 拡張生成プログラム (任意のデータをアウトバウンド RRD 要求に付加)、 および拡張ハンドラー (そのデータを消費し、受信データに基づいてアクションを実行) に依存します。 com.ibm.wsspi.rrd.extension パッケージについて詳しくは、管理者用の『追加のアプリケーション・プログラミング・インターフェース (API)』の項目を参照してください。
拡張生成プログラム
- 別の OSGI バンドル
- 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
- RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
個々の拡張生成プログラムはジェネレーター・エレメントで定義されます。 このエレメントには ID 属性が含まれ、RRD 応答データに追加される拡張機能が 拡張生成プログラムをターゲットにできるように、拡張生成プログラムに固有 ID を割り当てるために使用されます。 クラス属性は、拡張生成プログラムのクラス名を指定するのに使用されます。 拡張生成プログラムは、com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator インターフェースを実装する必要があります。 個々の拡張生成プログラムには、順序属性によって実行順序を関連付けることも できます。これは、複数の拡張生成プログラム記述子ファイルが存在する環境で 拡張生成プログラムの実行順序を強制する場合に役に立ちます。 さらに、ジェネレーターには、そのタイプを定義する type と呼ばれる必須属性があります。 サーブレット RRD ではその値は「servlet」で、 クラスは com.ibm.wsspi.rrd.extension.generator.ExtensionGenerator インターフェースを実装する必要があります。
<extension point="com.ibm.wsspi.rrd.generators">
<generator id="int1"
class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
order="1"
type=”servlet”>
<init-param>
<param-name>intValue</param-name>
<param-value>100</param-value>
</init-param>
</generator>
<generator id="string1"
class="com.ibm.ws.rrd.example.extension.StringExtensionGenerator"
order="2"
type=”servlet”>
<init-param>
<param-name>stringValue</param-name>
<param-value>This is an example string</param-value>
</init-param>
</generator>
<generator id="int2"
class="com.ibm.ws.rrd.example.extension.IntExtensionGenerator"
order="3"
type=”servlet”>
<init-param>
<param-name>intValue</param-name>
<param-value>200</param-value>
</init-param>
</generator>
</extension>
com.ibm.wsspi.rrd.extension.generator パッケージについて詳しくは、管理者用の『追加のアプリケーション・プログラミング・インターフェース (API)』の項目を参照してください。拡張ハンドラー
- 別の OSGI バンドル
- 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
- RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
個々の拡張ハンドラーはハンドラー・エレメントによって定義されます。 このエレメントには namespaceURI 属性と localName 属性が含まれていて、この 2 つを組み合わせることで、 拡張ハンドラーが処理できる拡張データの修飾名が定義されます。 さらに各拡張ハンドラーには、ID 属性で指定する固有 ID も必要です。 この属性で指定する値は、拡張生成プログラムに対応していなければ なりません。このプログラムによって、一致する修飾名と ID の拡張データが生成されます。 クラス属性は、拡張ハンドラーのクラス名を指定するのに使用されます。 拡張ハンドラーは、com.ibm.wsspi.extension.handler.ExtensionHandler インターフェースを実装する必要があります。 さらに、ハンドラーには、そのタイプを定義する type と呼ばれる必須属性があります。 その値は「servlet」で、クラスは、com.ibm.wsspi.rrd.extension.handler.ExtensionHandler インターフェースを実装する必要があります。
<extension point="com.ibm.wsspi.rrd.handlers">
<handler id="int1"
class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
localName="SimpleType" order="1"
type=”servlet”/>
<handler id="string1"
class="com.ibm.ws.rrd.example.extension.StringExtensionHandler"
namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
localName="SimpleType" order="2"
type=”servlet”/>
<handler id="int2"
class="com.ibm.ws.rrd.example.extension.IntExtensionHandler"
namespaceURI="http://www.ibm.com/ws/rrd/ext/types"
localName="SimpleType" order="3"
type=”servlet”/>
</extension>
com.ibm.wsspi.rrd.extension.handler パッケージについて詳しくは、管理者用の『追加のアプリケーション・プログラミング・インターフェース (API)』の項目を参照してください。拡張代行プログラム
拡張代行プログラムを 使用すると、RRD 呼び出し中に使用される特定の拡張生成プログラムおよびハンドラー・チェーン・インスタンスを ユーザーが指定できるようになり、その結果、RRD が任意のサーブレット・コンテナーを処理することができるようになります。 RRD は、拡張代行プログラムのユーザーが拡張できるリストを維持し、 実行時には、発行されるサーブレット要求のタイプに基づいて適切な代行プログラムを選択します。
- 別の OSGI バンドル
- 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
- RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
<extension point="com.ibm.wsspi.rrd.rrd-extension-delegator">
<ExtensionDelegatorRegistration>
<ExtensionDelegator priority="1" classname="com.ibm.ws.rrd.extension.PortletExtensionDelegator"/>
<ExtensionDelegator priority="2" classname="com.ibm.ws.rrd.extension.ServletExtensionDelegator"/>
</ExtensionDelegatorRegistration>
</extension>
カスタム EMF パッケージ
- 別の OSGI バンドル
- 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
- RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
<emfPackages>
<emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
</emfPackages>
</extension>