送信/受信プログラミング・モデル

このプログラミング・モデルにより、ユーザーは IMS™ 応答モードの トランザクションを実行することができます。

共用可能永続的ソケットの処理モデル

IMS でトランザクションを実行するために、Java™ アプリケーションは SYNC_SEND_RECEIVE 対話を実行します。 アプリケーションでは、execute メソッドによって使用される IMSInteractionSpec オブジェクトの interactionVerb プロパティーに値 SYNC_SEND_RECEIVE を指定し、commitMode プロパティーには値 0 または 1 を指定します。 しかし、SYNC_SEND_RECEIVE 対話式処理は、共用可能永続的ソケット接続と専用永続的ソケット接続とで異なります。

共用可能永続的ソケット接続は、 コミット・モード 1 対話およびコミット・モード 0 対話で使用することができます。 以下のシナリオは、通常処理、エラー処理、および実行タイムアウトにおける、 共用可能永続的ソケットでの SYNC_SEND_RECEIVE 対話を表しています。
  • 通常処理シナリオ

    IMS TM リソース・アダプターは、アプリケーション・サーバーを使用して、接続プールから 使用可能な接続を取得するか、あるいは新規の接続を作成します。 IMS TM リソース・アダプターは新規接続の初期化の一環として、その接続のための clientID を生成します。 生成された clientID により、ソケット接続が識別され、 また、コミット・モード 0 対話では TPIPE および関連の OTMA 非同期保留キューが識別されます。

    IMS リソース・ アダプターは、ソケットがその接続に関連付けられるようにして、そのソケットを使用して、 入力データを含む要求を IMS Connect に送信します。 そして、IMS Connect が IMS に メッセージを送信し、それを受け取った IMS が トランザクションを実行して出力メッセージを戻します。

    コミット・モード 0 対話では、出力メッセージを受け取ると、IMS TM リソース・アダプターが、内部的に ACK メッセージを IMS に送信します。 このメッセージは、IMS に 対して、IMS キューから その出力を廃棄するように指示します。 クライアント・アプリケーションが接続を閉じたり終了したりすると、 接続は接続プールに戻され、他のコミット・モード 0 またはコミット・モード 1 対話によって再利用できるようになります。

  • エラー処理シナリオ

    配信されなかった出力を転送宛先から検索するために、別のクライアント・アプリケーションから、専用永続的ソケット接続で SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話を実行することができます。 そのクライアント・アプリケーションでは、対話の クライアント ID に転送宛先を指定します。

    あるいは、配信されなかった出力を転送宛先から検索するために、別のクライアント・アプリケーションから代替クライアント ID を指定することによって共用可能永続的ソケット接続で SYNC_RECEIVE_ASYNCOUTPUT 対話または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話を実行することができます。 代替クライアント ID を使用することによって、そのクライアント・アプリケーションは任意の TPIPE から配信されなかった非同期出力メッセージを検索することができます。

    注: purgeAsyncOutput プロパティーのデフォルト値は TRUE です。
    purgeAsyncOutput が TRUE の場合、以下の出力メッセージはパージされます。
    • 1 次 IMS アプリケーション・ プログラムによって入出力 PCB に挿入された、配信されなかった出力メッセージ。
    • プログラム間の切り替えで起動された 2 次 IMS アプリケーション・ プログラムによって入出力 PCB に挿入された出力メッセージ。
    purgeAsyncOutput が FALSE に設定されている場合は、転送宛先を 指定する必要があります。
  • ExecutionTimeout シナリオ
    実行タイムアウトが発生した場合、ソケット接続はオープンしたままになりますが、 出力メッセージはクライアント・アプリケーションに配信されません。 しかし、実行タイムアウト例外に続いて、以下の 2 つの方法のいずれかで、 共用可能永続的ソケット接続でのコミット・モード 0 対話に関する、配信されなかった出力メッセージを検索できます。
    • SYNC_SEND_RECEIVE 対話を実行した同じクライアント・アプリケーションで、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話を実行する。
    • 前述のエラー処理シナリオで説明したように、配信されなかった出力メッセージを特定の宛先に転送する。

    クライアント・ アプリケーションが接続を閉じたり終了したりすると、接続は接続プールに戻され、 他のコミット・モード 0 対話またはコミット・モード 1 対話によって再利用できるようになります。

専用永続的ソケットの処理モデル

専用永続的ソケット接続は、 コミット・モード 0 対話でのみ使用することができます。 以下のシナリオは、通常処理、エラー処理、および実行タイムアウトにおける、 専用永続的ソケットでのコミット・モード 0 SYNC_SEND_RECEIVE 対話を表しています。
  • 通常処理シナリオ

    通常の環境では、 コミット・モード 0 SYNC_SEND_RECEIVE 対話がクライアント・アプリケーションによって実行されると、 アプリケーション・サーバーは、ユーザー指定の clientID が割り当てられた既存の接続を戻すか、 あるいはユーザー指定の clientID を使用して新規の接続を作成します。 ユーザー指定の clientID により、ソケット接続が識別され、 また、TPIPE および関連の OTMA 非同期保留キューが識別されます。

    IMS TM リソース・アダプターは、ソケットがその接続に関連付けられるようにして、そのソケットを 使用して、入力データを含む要求を IMS Connect に送信します。 そして、IMS Connect が IMS に メッセージを送信し、それを受け取った IMS が トランザクションを実行して出力メッセージを戻します。 IMS TM リソース・アダプターは、出力メッセージを受け取ると、内部的に ACK を IMS に送信します。 この ACK は、IMS キューから その出力を廃棄するように指示します。 接続が閉じたりアプリケーションが終了したりすると、接続が接続プールに戻され、 同じユーザー指定の clientID でコミット・モード 0 対話を実行している別の アプリケーションによって再利用されるようになります。

  • エラー処理シナリオ

    エラーが発生した場合には必ず、リソース例外がクライアント・アプリケーションにスローされます。 また、エラーによっては、IMS Connect によってソケットが切断される場合もあります。 コミット・モード 0 対話の場合、これは、出力メッセージをクライアント・アプリケーションに配信できないことを意味します。 配信されなかった出力は、ユーザー指定の clientID と関連付けられた TPIPE にキューイングされます。

    プロパティー purgeAsyncOutput および reRoute は、専用永続的ソケットには 適用できません。配信されなかった出力メッセージを専用永続的ソケットで パージまたは転送することはできません。

  • ExecutionTimeout シナリオ

    実行タイムアウトが発生した場合、 ソケットはオープンしたままになり、コミット・モード 0 対話からの出力は、 そのユーザー指定の clientID に関連した TPIPE にキューイングされ、後でリトリーブされます。 接続が閉じられるか、アプリケーションが終了すると、IMSManagedConnection オブジェクトが 接続プールに戻され、同じユーザー指定の clientID でコミット・モード 0 対話を 実行している別のアプリケーションによって再利用されます。


フィードバック