サーブレット拡張インターフェース

拡張生成プログラムおよびハンドラーを使用すると、サーブレットおよびポートレット呼び出しの リモート・メッセージにコンテンツを追加できます。 サーブレット拡張は、フィルター概念を活用して、既存の振る舞いを変更することもできます。 リモート要求ディスパッチャー (RRD) 拡張フレームワークは、 拡張生成プログラム (任意のデータをアウトバウンド RRD 要求に付加)、 および拡張ハンドラー (そのデータを消費し、受信データに基づいてアクションを実行) に依存します。 com.ibm.wsspi.rrd.extension パッケージについて詳しくは、管理者用の『追加のアプリケーション・プログラミング・インターフェース (API)』の項目を参照してください。

拡張生成プログラム

拡張生成プログラムは 拡張生成プログラム・チェーンの一部であり、RRD 要求の開始に先立って呼び出されます。 この拡張生成プログラム・チェーンは、 plugin.xml ファイルの com.ibm.wsspi.rrd.generators 拡張ポイントで定義されます。 このファイルは、以下のロケーションのいずれかに置くことができます。
  • 別の 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 インターフェースを実装する必要があります。

また、個々の拡張生成プログラムには任意の数の初期化パラメーターを指定することができます。 このパラメーターは、ゼロ個以上の init-param エレメントをジェネレーター・エレメントの子として 組み込むことにより指定されます。 以下は、拡張生成プログラム宣言の一例です。
<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)』の項目を参照してください。

拡張ハンドラー

拡張ハンドラーは拡張ハンドラー・チェーンの一部で、RRD 要求の受信後に呼び出されます。 この拡張ハンドラー・チェーンは、 plugin.xml ファイルの com.ibm.wsspi.rrd.handlers 拡張ポイントで定義されます。 このファイルは、以下のロケーションのいずれかに置くことができます。
  • 別の 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 インターフェースを実装する必要があります。

また、個々の拡張ハンドラーには任意の数の初期化パラメーターを指定することができます。 このパラメーターは、ゼロ個以上の init-param エレメントをハンドラー・エレメントの子として組み込むことにより指定されます。 以下は、拡張ハンドラー宣言の一例です。
  <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 は、拡張代行プログラムのユーザーが拡張できるリストを維持し、 実行時には、発行されるサーブレット要求のタイプに基づいて適切な代行プログラムを選択します。

カスタムの拡張代行プログラムは、 plugin.xml ファイルの com.ibm.wsspi.rrd.rrd-extension-delegator 拡張ポイントで 定義できます。このファイルは、以下のロケーションのいずれかに置くことができます。
  • 別の OSGI バンドル
  • 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
  • RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
個々の拡張代行プログラムは ExtensionDelegator エレメントによって定義されます。 このエレメントには、拡張代行プログラムを開始する相対順序を定義するための優先順位属性と、 特定の拡張代行プログラムの実装クラスを定義するクラス名属性が含まれています。 拡張代行プログラムは、 com.ibm.wsspi.rrd.extension.factory.ExtensionDelegator インターフェースを実装する必要があります。 優先順位が同じ拡張代行プログラムが複数ある場合、その実行順序は予測できません。 以下は、拡張代行プログラム宣言の一例です。
<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 パッケージ

拡張生成プログラムによって作成され、 拡張ハンドラーによって消費される拡張データは、Eclipse Modeling Framework (EMF) を使用してシリアライズされます。 カスタム拡張データを使用する予定があるユーザーは、 com.ibm.wsspi.rrd.rrd-emf-packages 拡張ポイントを使用して、 RRD が使用する前に適切な EMF パッケージが初期化されていることを確認する必要があります。 この拡張ポイントは plugin.xml ファイルの一部で、以下のロケーションのいずれかに置くことができます。
  • 別の OSGI バンドル
  • 任意の共有ライブラリー。 例えば、サーバー・クラス・ローダーにバインドされている共有ライブラリー。
  • RRD 対応のローカル Web アプリケーションの WEB-INF ディレクトリー
個々の EMF パッケージは emfPackage エレメントによって定義されます。 このエレメントには className エレメントが含まれます。className エレメントは、特定の EMF パッケージ用に 生成される EMF ファクトリー実装クラス (org.eclipse.emf.ecore.impl.EFactoryImpl を実装する 生成済みモデル・クラス) を指している必要があります。 以下は、EMF パッケージ宣言の一例です。
<extension point="com.ibm.wsspi.rrd.rrd-emf-packages">
  <emfPackages>
    <emfPackage className="com.ibm.ws.rrd.webservices.types.emf.impl.TypesFactoryImpl" />
  </emfPackages>
</extension>
注: 同じ生成済み EMF モデル・コードが複数の Web アプリケーション間で共有されている場合、その EMF モデル・コードは共有サーバー・ライブラリーの一部でなければなりません。ただし、すべての Web アプリケーションが同一のアプリケーション・サーバー内で実行されている場合に限ります。これは実動環境には該当しないのが普通ですが、Web アプリケーション・レベルでは、共通の EMF モデル・コードが存在することもあります。

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



タイム・スタンプ・アイコン 最終更新: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=rweb_rrd_servlet_ext
ファイル名:rweb_rrd_servlet_ext.html