個々の拡張ジェネレーターはジェネレーター・エレメントで定義されます。 このエレメントには 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 文書 を参照してください。
個々の拡張ハンドラーはハンドラー・エレメントによって定義されます。 このエレメントには 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 は、拡張代行プログラムのユーザーが拡張できるリストを維持し、 実行時には、発行されるサーブレット要求のタイプに基づいて適切な代行プログラムを選択します。
<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>
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages"> <emfPackages> <emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" /> </emfPackages> </extension>