JMS/XLAのMapMessageの内容

Jakarta JMSのjakarta.jms.MapMessageインスタンスまたはJavaX JMSのjavax.jms.MapMessageインスタンスには、C構造ttXlaUpdateDesc_tとしてパブリッシュされた、XLA更新ヘッダー内のフィールドに対応する一連の入力済名前/値ペアが含まれています。

MapMessageインスタンスに含まれるフィールドは、更新タイプによって異なります。

XLA更新タイプ

JMS/XLA APIで返される各MapMessageインスタンスには、メッセージ内に記述されている更新タイプを示す__TYPE(アンダースコア2つ)という名前/値ペアが1つ以上含まれています。タイプは、整数値で指定されています。

表6-1に、サポートされているタイプを示します。

ノート:

整数タイプと比較するために、Jakata JMSの場合はcom.timesten.dataserver.jakartajmsxla.XLAConstantsに、JavaX JMSの場合はcom.timesten.dataserver.jmsxla.XlaConstantsに定義されている定数を使用します。

表6-1 XLA更新タイプ

タイプ 説明

ADD_COLUMNS

列が追加されたことを示します。

COMMIT_FIELD

コミットを含むメッセージ内のフィールドの名前。

COMMIT_ONLY

コミットが発生したことを示します。

CONTEXT_FIELD

これは、バイト配列としてttApplicationContextプロシージャに渡されたコンテキスト値を含むメッセージ内のフィールドの名前です。

CREATE_INDEX

索引が作成されたことを示します。

CREATE_SEQ

順序が作成されたことを示します。

CREATE_SYNONYM

シノニムが作成されたことを示します。

CREATE_TABLE

表が作成されたことを示します。

CREATE_VIEW

ビューが作成されたことを示します。

DELETE

行が削除されたことを示します。

DROP_COLUMNS

列が削除されたことを示します。

DROP_INDEX

索引が削除されたことを示します。

DROP_SEQ

順序が削除されたことを示します。

DROP_SYNONYM

シノニムが削除されたことを示します。

DROP_TABLE

表が削除されたことを示します。

DROP_VIEW

ビューが削除されたことを示します。

FIRST_FIELD

トランザクションの最初のレコードを示すフラグを含むフィールドの名前。

INSERT

行が挿入されたことを示します。

MTYP_FIELD

タイプ情報を含むメッセージ内のフィールドの名前。

MVER_FIELD

XLAレコードのトランザクション・ログ・ファイル数を含むメッセージ内のフィールドの名前。

NULLS_FIELD

NULL値を持つフィールドのリストを含むメッセージ内のフィールドの名前。

REPL_FIELD

レプリケーションで更新が適用されたことを示すフラグを含むメッセージ内のフィールドの名前。

TBLNAME_FIELD

表の名前を含むメッセージ内のフィールドの名前。

TBLOWNER_FIELD

表の所有者を指定するメッセージ内のフィールドの名前。

TRUNCATE

表が切り捨てられたことを示します。

TYPE_FIELD

メッセージ・タイプを指定するメッセージ内のフィールドの名前。

UPDATE

行が更新されたことを示します。

UPDATE_DESCRIPTOR_FIELD

バイト配列としてttXlaUpdateDesc_tを返すフィールドの名前。

UPDATED_COLUMNS_FIELD

更新された列のリストを含むメッセージ内のフィールドの名前。

XLAフラグ

すべての更新タイプに対して、MapMessageインスタンスには次のことを示す名前/値ペアが含まれています。

  • トランザクションの最初のレコードであるかどうか

  • トランザクションの最後のレコードであるかどうか

  • 更新がレプリケーションによって実行されたかどうか

  • どの表が更新されたか

  • 更新された表の所有者

表6-2に、これらのXLAフラグを含む名前/値ペアを示します。各名前の先頭には、2つのアンダースコアが付いています。

表6-2 JMS/XLAフラグ

名前 説明 対応するttXlaUpdateDesc_tフラグ

__AGING_DELETE

エージングによって削除されたことを示します。このフラグは、XLA更新レコードがエージングによって削除された場合のみ示されます。XlaConstants定数AGING_DELETE_FIELDがこのフラグを表します。

TT_AGING

__CASCADING_DELETE

カスケード削除によって削除されたことを示します。このフラグは、XLA更新レコードがカスケード削除によって削除された場合のみ示されます。XlaConstants定数CASCADING_DELETE_FIELDがこのフラグを表します。

TT_CASCDEL

__COMMIT

トランザクション内の最終レコードであり、この操作の後にコミットが実行されたことを示します。これは、TT_UPDCOMMITがオンの場合にMapMessageに含まれます。XlaConstants定数COMMIT_FIELDがこのフラグを表します。

TT_UPDCOMMIT

__FIRST

新規トランザクション内の最初のレコードであることを示します。これは、TT_UPDFIRSTがオンの場合にMapMessageに含まれます。XlaConstants定数FIRST_FIELDがこのフラグを表します。

TT_UPDFIRST

__REPL

この変更がレプリケーションによってデータベースに適用されたことを示します。これは、TT_UPDREPLがオンの場合にMapMessageに含まれます。XlaConstants定数REPL_FIELDがこのフラグを表します。

TT_UPDREPL

__UPDCOLS

これは、XLA更新ディスクリプタにはその操作によって実際に変更された列のリストが含まれることを示すUPDATETUPレコードのみに使用されます。これは、列名のリストがセミコロンで区切られた文字列として指定され、TT_UPDCOLSがオンの場合にのみMapMessageに含まれます。XlaConstants定数UPDATE_COLUMNS_FIELDがこのフラグを表します。

TT_UPDCOLS

ノート:

XlaConstantsインタフェースは、com.timesten.dataserver.jmsxlaパッケージ内にあります。

アプリケーションは、MapMessageメソッドitemExists()を使用して、フラグが示されるかどうか判断したり、getBoolean()を使用して、フラグが設定されているかどうかを判断できます。入力時に、XlaConstants.AGING_DELETE_FIELDなどのフラグに対応するXlaConstants定数を指定します。

XLAでTT_UPDCOMMITを使用するのと同じように、JMS/XLAで、これがトランザクションの最後のレコードであるか、操作後にコミットが実行されたかを確認するため次のテストを行うことができます。

if (MapMessage.getBoolean(XlaConstants.COMMIT_FIELD) ) { // Field is set
   ...
}