その他のトランザクション・サポート

IMS™ TM リソース・アダプター は、ローカル・トランザクション、1 フェーズ・コミット処理、グローバルでないトランザクション処理、およびグローバル・トランザクション・スコープ内での会話型トランザクション処理もサポートしています。

ローカル・トランザクション

J2EE Connection Architecture では、javax.resource.cci.LocalTransaction インターフェースが定義されており、トランザクション・マネージャーではなくリソース・マネージャーが、トランザクションをローカルで調整するようになっています。 しかし、IMS TM リソース・アダプター は、トランザクション・マネージャーによるトランザクション調整のみをサポートしています。 したがって、IMS TM リソース・アダプターjavax.resource.cci.LocalTransaction インターフェースをサポートしていません。 IMSConnection.getLocalTransaction() メソッドを呼び出すと、NotSupportedException が発生します。IMS TM リソース・アダプター でトランザクション・サポートを使用するには、JTA トランザクション・ インターフェースを使用するか、あるいは、ご使用のアプリケーションの デプロイメント記述子で適切なトランザクション属性を設定する必要があります。 詳細については、「クライアント・アプリケーションでのグローバル・トランザクション・サポート」のトピックを参照してください。

1 フェーズ・コミット処理

IMS TM リソース・アダプター は、 トランザクション・マネージャーを使用した 1 フェーズ・コミットの最適化をサポートしています。 したがって、あるトランザクション・スコープ内のすべての変更が同一の IMS リソースに属している場合には、 フェーズ 1 準備要求を送信しなくても、フェーズ 2 コミット要求をリソース・マネージャーに直接送信することによって 変更がコミットされるように、トランザクション・マネージャーで 1 フェーズ・コミットの最適化を行うことができます。

グローバルでないトランザクション処理

アプリケーション内でグローバル・トランザクション処理が 使用されない場合 (例えば、トランザクション属性が TX_NOTSUPPORTED に設定されている場合)、 グローバルでないすべてのトランザクション処理で「Sync-On-Return」(OTMA SyncLevel=None) が使用されます。 IMS トランザクションが コミットされたときには、出力は既にクライアントに戻されています。

グローバル・トランザクション・スコープにおける会話型トランザクション処理

IMSIMS は、会話型プログラムを使用して、 処理を、クライアントからプログラムへ、プログラムからクライアントへという、 一貫性のある連続した対話 (反復とも言います) に分割します。 それぞれの反復は、一種の IMS 会話型トランザクションです。 会話型処理は、1 つのトランザクショ ンがいくつかのパーツで構成されている場合に使用されます。単一の大きなトランザクションを構成するそれぞれのパーツは、別々にコミットまたはロールバックされます。

会話型トランザクションは、以下の場合にグローバル・トランザクション・スコープ内で実行できます。
  • それぞれの反復が同一のトランザクション・レベルで実行されている。 例えば、最初の反復がグローバル・トランザクション・スコープを使用して処理される場合、 その IMS 会話型トランザクション内のそれ以降のすべての反復は、 グローバル・トランザクション・レベルで処理する必要があります。 トランザクション・スコープを指定しないで 2 番目の反復を発行すると、IMS OTMA からエラーが報告されます。
  • それぞれの反復が、その IMS 会話内の次の反復が発行される前に、 必ずコミットまたはロールバック呼び出しを使用して完了するようになっている。 複数の反復を単一のグローバル・トランザクション・スコープにグループ化することはできません。

フィードバック