9.4.4.1 イベント・ハンドラの指定

トランザクション、操作およびメタデータ・イベントのJavaでの処理は次のようになります。

  • Oracle GoldenGate ReplicatまたはExtractプロセスがローカル証跡データを読み取り、トランザクション、操作およびデータベース・メタデータをJava配信モジュールに渡します。メタデータは、証跡自体のソース定義ファイルから取得できます。

  • Javaフレームワークがイベントを発行します。イベントは、オプションでカスタム・イベント・フィルタによってフィルタされます。

  • ハンドラ(イベント・リスナー)がこれらのイベントを処理し、トランザクション、操作およびメタデータを処理します。特定のタイプのターゲットにカスタム・フォーマッタが適用される場合があります。

既存のハンドラがいくつかあります。

  • 様々な組込みOracle GoldenGate for Distributed Applications and Analytics (GG for DAA)ハンドラでの、サポートされているGG for DAAターゲットへのレコードの適用については、「データの複製」で、GG for DAAでサポートされている様々なハンドラの構成を参照してください。

  • MapMessageを使用するか、TextMessageをカスタマイズ可能なフォーマッタと組み合せて使用し、JMSプロバイダに送信するJMSメッセージ・ハンドラ。

  • JMSメッセージをOracleアドバンスト・キューイング(AQ)に送信する、専用のメッセージ・ハンドラ。

  • 1つのファイルまたはローリング・ファイルに書き込むファイル・ライター・ハンドラ。

    ノート:

    ファイル・ライターはJMS TextMessageハンドラと完全に同じフォーマッタを使用できるため、ファイル・ライター・ハンドラは開発ユーティリティとして特に有用です。ファイル・ライターを使用すると、JMSに実際にメッセージを送らずにJMS用のフォーマッタのテストとチューニングを簡単に行えます。

イベント・ハンドラはメインJavaプロパティ・ファイルを使用して構成できます。あるいは、オプションで別のプロパティ・ファイルから直接プロパティを読み込む場合もあります(ハンドラの実装によって異なります)。ハンドラのプロパティは次の構文を使用して設定されます。

gg.handler.{name}.someproperty=somevalue

これによって、プロパティ・ファイルでnameで識別されるハンドラ・インスタンスのプロパティsomepropertyが値somevalueに設定されます。このnameはプロパティ・ファイルで使用され、アクティブ・ハンドラを定義し、そのプロパティを設定します。これはユーザー定義です。

実装上のノート(Java開発者向け): 前述の例の後、ハンドラがインスタンス化されると、メソッドvoid setSomeProperty (String value)がハンドラ・インスタンスでコールされ、文字列値somevalueが渡されます。JavaBean PropertyEditorもハンドラに対して定義できます。この場合、文字列は、セッター・メソッドに対して適切な型に自動的に変換されます。たとえば、Javaアプリケーション・プロパティ・ファイルで次のような設定だとします。

# the list of active handlers: only two are active
gg.handlerlist=one, two
# set properties on 'one'
gg.handler.one.type=file
gg.handler.one.format=com.mycompany.MyFormatter
gg.handler.one.file=output.xml
# properties for handler 'two'
gg.handler.two.type=jms_text
gg.handler.two.format=com.mycompany.MyFormatter
gg.handler.two.properties=jboss.properties
# set properties for handler 'foo'; this handler is ignored
gg.handler.foo.type=com.mycompany.MyHandler
gg.handler.foo.someproperty=somevalue

タイプによってハンドラ・クラスが識別されます。他のプロパティは、作成されるハンドラのタイプによって異なります。別個のプロパティ・ファイルがハンドラ(JMSハンドラなど)の初期化に使用される場合、プロパティ・ファイルはクラスパスにあります。たとえば、プロパティ・ファイルが{gg_install_dir}/dirprm/foo.propertiesにある場合、プロパティ・ファイルでgg.handler.name.properties=foo.propertiesのように指定します。