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 EventGeneratorextends AbstractPullEventGenerator