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更新タイプ
| タイプ | 説明 |
|---|---|
|
|
列が追加されたことを示します。 |
|
|
コミットを含むメッセージ内のフィールドの名前。 |
|
|
コミットが発生したことを示します。 |
|
|
これは、バイト配列として |
|
|
索引が作成されたことを示します。 |
|
|
順序が作成されたことを示します。 |
|
|
シノニムが作成されたことを示します。 |
|
|
表が作成されたことを示します。 |
|
|
ビューが作成されたことを示します。 |
|
|
行が削除されたことを示します。 |
|
|
列が削除されたことを示します。 |
|
|
索引が削除されたことを示します。 |
|
|
順序が削除されたことを示します。 |
|
|
シノニムが削除されたことを示します。 |
|
|
表が削除されたことを示します。 |
|
|
ビューが削除されたことを示します。 |
|
|
トランザクションの最初のレコードを示すフラグを含むフィールドの名前。 |
|
|
行が挿入されたことを示します。 |
|
|
タイプ情報を含むメッセージ内のフィールドの名前。 |
|
|
XLAレコードのトランザクション・ログ・ファイル数を含むメッセージ内のフィールドの名前。 |
|
|
NULL値を持つフィールドのリストを含むメッセージ内のフィールドの名前。 |
|
|
レプリケーションで更新が適用されたことを示すフラグを含むメッセージ内のフィールドの名前。 |
|
|
表の名前を含むメッセージ内のフィールドの名前。 |
|
|
表の所有者を指定するメッセージ内のフィールドの名前。 |
|
|
表が切り捨てられたことを示します。 |
|
|
メッセージ・タイプを指定するメッセージ内のフィールドの名前。 |
|
|
行が更新されたことを示します。 |
|
|
バイト配列として |
|
|
更新された列のリストを含むメッセージ内のフィールドの名前。 |
XLAフラグ
すべての更新タイプに対して、MapMessageインスタンスには次のことを示す名前/値ペアが含まれています。
-
トランザクションの最初のレコードであるかどうか
-
トランザクションの最後のレコードであるかどうか
-
更新がレプリケーションによって実行されたかどうか
-
どの表が更新されたか
-
更新された表の所有者
表6-2に、これらのXLAフラグを含む名前/値ペアを示します。各名前の先頭には、2つのアンダースコアが付いています。
表6-2 JMS/XLAフラグ
| 名前 | 説明 | 対応するttXlaUpdateDesc_tフラグ |
|---|---|---|
|
|
エージングによって削除されたことを示します。このフラグは、XLA更新レコードがエージングによって削除された場合のみ示されます。 |
|
|
|
カスケード削除によって削除されたことを示します。このフラグは、XLA更新レコードがカスケード削除によって削除された場合のみ示されます。 |
|
|
|
トランザクション内の最終レコードであり、この操作の後にコミットが実行されたことを示します。これは、 |
|
|
|
新規トランザクション内の最初のレコードであることを示します。これは、 |
|
|
|
この変更がレプリケーションによってデータベースに適用されたことを示します。これは、 |
|
|
|
これは、XLA更新ディスクリプタにはその操作によって実際に変更された列のリストが含まれることを示す |
|
ノート:
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
...
}