• 検索結果がありません。

: アダプ タの実装

ドキュメント内 devadapt.book (ページ 138-146)

sample.client.ApplicationViewClient

手順 3 : アダプ タの実装

7

イ ベン ト アダプ タ の開発

コー ド リ ス ト

7-1

イベン ト 生成ロギングカ テゴ リ を作成するサンプル コー ド

<category name='BEA_WLS_SAMPLE_ADK.EventGenerator' class='com.bea.

logging.LogCategory'>

</category>

BEA_WLS_SAMPLE_ADKを開発対象のアダプ タの論理名に置き換え ます。

こ のカテゴ リ にパ ラ メ ータ を設定し ない場合、 親カテゴ リ のすべてのプロパテ ィ 設定を継承し ます。 こ の例では、 親カテ ゴ リ は BEA_WLS_SAMPLE_ADK です。

ルー ト カテゴ リ と し てアダプ タ論理名を使用する必要はあ り ませんが、 複数ア ダプ タ環境で他のアダプ タに影響を及ぼ さ ない よ う 、 ユニー ク な識別子を使用す る必要があ り ます。

手順

3 :

ア ダ プ タ の実装

アダプ タの開発

7-9

手順 3a : イベン ト ジ ェ ネレータの作成

イベン ト 生成機能に よ り 、 EIS か ら通知を受信し た り 、 ま たは EIS をポー リ ング し た り し て特定の イベン ト の発生を チェ ッ クする メ カニズ ムがアダプ タ に装備さ れます。 WebLogic Integration エンジ ンは、 複数タ イ プの イベン ト をサポー ト す

る強力な イベン ト ジ ェ ネレータ を提供し ます。 イベン ト タ イ プは、 イベン ト の コ ン フ ィ グ レーシ ョ ン プ ロパテ ィ で定義 さ れます。

イベン ト プロパテ ィ は、 通常、 設計時に イベン ト に関連付け られたプ ロパテ ィ で定義さ れます。 イベン ト アダプ タ を コ ン フ ィ グ レーシ ョ ンする場合、 アダプ タが イ ベン ト プ ロパテ ィ を収集する Web ページを 1 ページ以上指定する こ と が でき ます。 こ れ らのプ ロパテ ィ は、 アプ リ ケーシ ョ ン ビ ュー記述子 と と もに保 存さ れ、 実行時に イベン ト に戻 さ れます。 WebLogic Integration エンジ ンでは、

こ のプ ロパテ ィ および ソース アプ リ ケーシ ョ ン ビ ューを使用し て、 リ スナへ戻 すルーテ ィ ン グが決定 さ れます。 た と えば、 同じ プロパテ ィ が定義さ れた同一の

イベン ト ジ ェ ネ レータ 2 つを別々にデプ ロ イ し て も、 WebLogic Integration エン ジンでは 1 つの IEventDefinition し か作成さ れませんが、 異な るプ ロパテ ィ が指定さ れた場合は、 単一の イベン ト アダプ タの各デプ ロ イ メ ン ト に対し、 1 つ の IEventDefinition

が作成さ れます。 イベン ト ジ ェ ネレータは、 ルーテ ィ ン

グ処理でどの IEventDefinition を使用する かを決定する必要があ り ます。 こ の決定は、 通常、 プロパテ ィ の値 と 特定の イベン ト 発生に基づいて行われます。

IEventDefinitionオブジ ェ ク ト は、 イベン ト ジ ェ ネレータ の実装で使用 さ れ、

特定の イベン ト を リ スナに戻すルーテ ィ ング を行います。 別に説明する と お り 、

WebLogic Integration

エンジンに よ っ て イベン ト を含むデプ ロ イ さ れたアプ リ ケーシ ョ ン ビ ューの IEventDefinitionオブジ ェ ク ト を作成し ます。

IEventDefinitionオブジ ェ ク ト を使用し て、 アプ リ ケーシ ョ ン ビ ューのデプ ロ イ メ ン ト に関する特定のプ ロパテ ィ を抽出し た り 、 ス キーマおよびルーテ ィ ン グ オブジ ェ ク ト にア ク セ ス し た り で き ます。 こ れ ら の属性は、 イベン ト のルー テ ィ ング時に使用し ます。

データ抽出メ カニズムの実装

WebLogic Integration

では、 次に示す 2 つのデータ抽出モー ド をサポー ト し てい

ます。

プ ッ シ ュ イベン ト に よ る生成-イベン ト 生成オブジ ェ ク ト が イ ベン ト ジ ェ ネ レータに通知を送信する と 、 ス テー ト の変更が認識 さ れます。 プ ッ シ ュ イ ベン ト ジ ェ ネレータが イ ベン ト を受信する と 、 WebLogic Integration エンジ

7

イ ベン ト アダプ タ の開発

ンに よ っ て、 デプ ロ イ さ れたアプ リ ケーシ ョ ン ビ ューに イベン ト が転送さ れ ます。 プ ッ シ ュ イベン ト ジ ェ ネ レータでは、 パブ リ ッ シ ュ モデルおよびサ ブス ク ラ イ ブ モデルが使用 さ れてい ます。

プル イベン ト に よ る生成-ス テー ト が変更し たかど う かの判断にポー リ ング が必要な と き に使用し ます。 データ抽出プ ロセ スでは、 ス テー ト の変更が認 識 さ れる まで、 継続的にオブジ ェ ク ト に対する ク エ リ が行われます。 ス テー ト の変更が認識さ れた時点で イベン ト が作成 さ れ、 WebLogic Integration エ ンジンに よ っ て、 デプロ イ さ れたアプ リ ケーシ ョ ン ビ ューに こ の イベン ト が 転送さ れます。

プル モー ド

プル モー ド では、 ポー リ ング手法に よ り イベン ト の発生が判断 さ れます。 こ れ を実装するには、com.bea.adapter.event

パ ッ ケージの

AbstractPullEventGeneratorか ら イベン ト ジ ェ ネレータ を取得し ます。

注意

:

adk-eventgenerator.jar

フ ァ イ ルには、 イベン ト ジ ェ ネ レータの実装

に必要な ADK ベース ク ラ スが含まれます。 こ れは、 WAR メ イ ク フ ァ イルに含まれます。

ADK

では、AbstractPullEventGeneratorに、 抽象 メ ソ ッ ド をい く つか用意し ていますが、 実際の実装では こ れをオーバー ラ イ ド し ます。 こ れ ら の メ ソ ッ ド に ついて以下の表に示し ます。

7-1 AbstractPullEventGenerator

メ ソ ッ ド

メ ソ ッ ド 説明

postEvents() 他の イ ベン ト 生成、 メ ッ セージ変換、 およ びルーテ ィ ン グ コー ド の制御 メ ソ ッ ド で、 ポー リ ン グお よびルーテ ィ ン グ コ ー ド を 追加で き る 。 イ ベン ト ルー タ コ ン フ ィ グ レーシ ョ ン フ ァ イ ルで指定 さ れた間隔で、

AbstractPullEventGeneratorの実行 メ ソ ッ ド か ら 呼 び出 さ れ る 。

setupNewTypes() デプ ロ イ さ れ るIEventDefinitionオブジ ェ ク ト を前処 理する ための メ ソ ッ ド 。 有効な新 し い

IEventDefinitionオブジ ェ ク ト だけが こ の メ ソ ッ ド に 渡 さ れ る。

手順

3 :

ア ダ プ タ の実装

アダプ タの開発

7-11

プ ッ シ ュ モー ド

プ ッ シ ュ モー ド は、 イベン ト のルーテ ィ ン グ を ト リ ガする通知を使用し ます。

こ れを実装する には、com.bea.adapter.eventパ ッ ケージの

AbstractPushEventGenerator ク ラ スか ら イベン ト ジ ェ ネレータ を取得し ま す。 こ の イベン ト パ ッ ケージには、 他に も い く つかのサポー ト ク ラ スが入って います。 表 7-2 でサポー ト ク ラ ス を説明し ています。

注意

:

adk-eventgenerator.jarフ ァ イルには、 イベン ト ジ ェ ネレータ の実装 に必要な WebLogic Integration ベース ク ラ スが含まれます。 こ れは、

WAR

メ イ ク フ ァ イルに含まれます。

removeDeadTypes() ア ンデプ ロ イ さ れ るIEventDefinitionオブジ ェ ク ト に 対し て要求 さ れた ク リ ーン ア ッ プを処理する 。

WebLogic Integration

エン ジ ンは、 関連 イベン ト のアプ リ ケーシ ョ ン ビ ュ ーがア ンデプ ロ イ さ れた場合に こ の メ ソ ッ ド を呼び 出す。

doInit() イベン ト ジ ェ ネ レータ が作成 さ れ る と き に呼び出 さ れ る。

初期化プ ロ セ ス で、 イベン ト ジ ェ ネ レー タ に よ っ て事前 定義 さ れた コ ン フ ィ グ レーシ ョ ン値が使用 さ れて、 イベ ン ト 生成処理に必要な ス テー ト ま たは接続情報が設定 さ れ る 。

doCleanUpOnQuit() イベン ト 生成プ ロ セ ス で割 り 当て ら れた リ ソ ース を 解放 する 。 イ ベン ト 生成処理を行っ てい る ス レ ッ ド の終了前 に呼び出 さ れ る。

7-1 AbstractPullEventGenerator

メ ソ ッ ド (続き)

メ ソ ッ ド 説明

7

イ ベン ト アダプ タ の開発

イベン ト ジ ェ ネレータの実装方法

イベン ト ジ ェ ネレータ の実装は、 通常、 次の制御フ ローに従っ て行います。

7-2 AbstractPushEventGenerator

ク ラス

ク ラス 説明

AbstractPushEventGenerator AbstractPullEventGenerator と 同 じ抽 象 メ ソ ッ ド およ び具象 メ ソ ッ ド が入っ てい

る ク ラ ス。 両方の実装

(AbstractPullEventGenerator

and

AbstractPushEventGenerator) におけ

る メ ソ ッ ド の使用目的は同 じ であ る。 それ ぞれに割 り 当て ら れてい る メ ソ ッ ド と 役割 の リ ス ト については、 表

7-1

を参照。

IPushHandler お も に イベン ト のルーテ ィ ン グか ら イベン

ト の生成を 行 う ための イ ン タ フ ェース。

データ 抽出のプ ッ シ ュモー ド の実装には必 要 と さ れない。IPushHandlerは、

PushEventGenerator と 密に結合 し て使用 す る ために設計 さ れてい る。

PushEventGeneratorは、PushHandler の実装の初期化、 サブ ス ク ラ イ ブ、 ク リ ー ン ア ッ プを 行 う 。IPushHandlerは、 生成 ロ ジ ッ ク を 行 う 簡単な イ ン タ フ ェース であ る 。 こ の イ ン タ フ ェース に よ って、 リ ソ ー ス の初期化、 プ ッ シ ュ イ ベン ト へのサブ ス ク ラ イ ブ、 およ び ク リ ーン ア ッ プを 行 う 。

PushEvent java.util.EventObjectか ら 派生する イ

ベン ト オブジ ェ ク ト 。PushEventオブジ ェ ク ト は

EIS

通知の ラ ッ パ と し て設計 さ れて お り 、 あ ら ゆ るIPushEventListenerオブ ジ ェ ク ト に送信する 。

EventMetaData イベン ト 生成に必要なデータ をラ ッ プする 。

こ の ク ラ スは、 初期化時にIPushHandler に渡 さ れ る 。

手順

3 :

ア ダ プ タ の実装

アダプ タの開発

7-13 1.

doInit() メ ソ ッ ド は、 EIS に対する接続を作成し、 有効性を検証し ます。

2.

setupNewTypes() メ ソ ッ ド は、 処理に必要なデータ構造を作成する IEventDefinitionオブジ ェ ク ト を処理し ます。

3.

postEvents() メ ソ ッ ド は、 以下のデータ抽出モー ド のいずれか 1 つを繰 り 返し呼び出し ます。

プ ッ シ ュ- postEvents() メ ソ ッ ド はイベン ト が存在する場合に EIS を ポー リ ング し、postEvent()はどの IEventDefinitionオブジ ェ ク ト が それを受け取る かを決定し ます。 その後、 関連ス キーマを使用し て、 イ ベン ト データ をIDocumentオブジ ェ ク ト に変換し、IEventDefinition オブジ ェ ク ト に関連する IEventを使用し て IDocumentオブジ ェ ク ト を ルーテ ィ ング し ます。

プル- postEvents() メ ソ ッ ド は イベン ト の通知を待ち ます。 通知を受 け取る と 、 イベン ト データ を PushEventオブジ ェ ク ト か ら抽出し、 それ を、 イ ベン ト アダプ タに割 り 当て られた ス キーマに従っ て IDocumentオ ブジ ェ ク ト に変換し ます。IDocumentに必要な イ ベン ト データ がすべて 含まれてい る場合、IDocumentは適切な IEventDefinitionオブジ ェ ク

ト に転送さ れます。

4.

removeDeadTypes() メ ソ ッ ド は、 イベン ト 処理に使用 さ れているデータ構 造か ら無効な IEventDefinitionオブジ ェ ク ト を削除し ます。 こ れ ら のオブ ジ ェ ク ト に関連付け られた リ ソ ース も解放 さ れます。IEventDefinitionオ ブジ ェ ク ト は、 アプ リ ケーシ ョ ン ビ ューがデプ ロ イ さ れていない場合に、 無 効 と みな さ れます。

5.

doCleanUpOnQuit() メ ソ ッ ド は、 イベン ト 処理中に割 り 当て ら れた リ ソ ー ス を削除し ます。

コー ド リ ス ト 7-2 は、 サンプル アダプ タの (プル モー ド) イ ベン ト ジ ェ ネ レー タの ク ラ ス宣言を示し ています。

コー ド リ ス ト

7-2

データ抽出のプルモー ドの実装例 public class EventGenerator

extends AbstractPullEventGenerator

ドキュメント内 devadapt.book (ページ 138-146)