非同期出力プログラミング・モデル

このプログラミング・モデルにより、ユーザーは IMS™ により キューに入れられた出力を取り出すことができます。

アプリケーションはいくらか早い時点、すなわち非同期出力の期間にキューに入れられた出力を取り出す必要がある場合があります。 非同期出力はいくつかの状況で発生します。 例えば、commitMode 0 対話からの配信されなかった出力、プログラムから プログラムへの切り替えからの出力、ISRT から代替 PCB への出力、複数の 出力メッセージを戻す IMS アプリケーションからの 出力などです。

非同期出力を取り出すために、Java™ アプリケーションは SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話を 実行します。アプリケーションでは、対話の execute メソッドによって使用される IMSInteractionSpec オブジェクトの interactionVerb プロパティーの値を 指定し、commitMode プロパティーに値 0 を指定します。

ソケット接続には、共用可能永続的ソケットと専用永続的ソケットの 2 種類があり、 非同期出力を検索するために使用できます。 非同期出力メッセージの検索方法は、使用するソケット接続の種類によって異なります。 非同期出力を検索するために使用できる interactionVerb プロパティー値は、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT および SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT (古い SYNC_RECEIVE_ASYNCOUTPUT と一緒に使用) です。

注: SYNC_RECEIVE_ASYNCOUTPUT と SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT では、機能的な違いはありません。 しかし、IMS TM リソース・アダプター 9.1.0.1 および将来の商品では、新しい名前の SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT を 使用することをお勧めします。 本書では、新しい名前である SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT のみを使用します。

SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT と SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT の 違いにより、IMS Connect が IMS OTMA 非同期保留キューで出力をどのように検査するかが決まります。 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話では、 検索要求が出されたときに IMS OTMA 非同期保留キューに非同期出力がない場合、クライアント・アプリケーションで 指定した実行タイムアウト値の時間が過ぎるとすぐに、IMS Connect は実行タイムアウト通知を戻します。 そのため、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT 対話では、可能な最短の実行タイムアウト値である 10 をお勧めします。

SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話では、検索要求が出されたときに IMS OTMA 非同期保留キューに非同期出力がない場合、IMS Connect は、OTMA がメッセージを戻すのを、対話の executionTimeout プロパティーで 指定された時間の長さの間待ちます。 実行タイムアウトの時間が過ぎたときに保留キューに依然として非同期出力がない場合、IMS Connect は実行タイムアウト・エラーを戻します。 SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話では、可能な最短の値ではなく、適切な実行タイムアウト値を選択してください。

これらの 3 つの interactionVerb プロパティー値はすべてコミット・モード 0 を必要とし、 共用可能永続的ソケットと専用永続的ソケットの両方の接続で使用可能です。 さらに、IMSInteractionSpec プロパティーの purgeAsycOutput、reRoute、および reRouteName は、上記 3 つの interactionVerbs を使用する対話には適用されず、IMS TM リソース・アダプターによって 無視されます。 interactionVerb プロパティーを呼び出す方法は、共用可能永続的ソケット接続と専用永続的ソケット接続で異なります。 さらに、2 つの方法 (同じ対話で代替クライアント ID または reRouteName のいずれか) を使用して共用可能永続的ソケット接続から非同期出力を検索することができます。

専用永続的ソケット接続での非同期出力の検索

専用永続的ソケットでキューに入れられた出力メッセージを検索するには、クライアント・アプリケーションは、IMSInteractionSpec の interactionVerb プロパティーを SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT に設定して、コミット・モード 0 対話を実行する必要があります。

また、IMSInteractionSpec の該当する interactionVerb プロパティーを 設定して、専用永続的ソケット接続でコミット・モード 0 対話を実行する他に、 クライアント・アプリケーションは、IMSConnectionSpec の clientID プロパティーの 値を指定する必要があります。 clientID が必要なのは、非同期出力を検索する TPIPE を判別するためです。 専用永続的ソケットで実行されるコミット・モード 0 対話から出力メッセージを検索するには、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT 対話で指定する clientID が、元のコミット・モード 0 対話に指定された値と一致している必要があります。 代替 PCB に送信される出力メッセージを検索するには、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT 対話で指定する clientID が、代替 PCB の名前と一致している必要があります。 reRouteName 宛先に転送された出力メッセージを検索するには、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT 対話の clientID を、その reRouteName プロパティーで指定された宛先に設定する必要があります。

代替クライアント ID を使用した共用可能永続的ソケット接続での非同期出力の検索

クライアント・アプリケーションは代替クライアント ID を使用して、任意の OTMA TPIPE から転送されるか、または転送されない非同期出力メッセージを検索することができます。この代替クライアント ID は、対話の execute メソッドによって使用される IMSInteractionSpec オブジェクトの altClientID プロパティーを使用して指定します。 代替クライアント ID は、非同期出力メッセージが存在する OTMA TPIPE の名前と一致します。クライアント・アプリケーションは、同じ対話で rerouteName と代替クライアント ID を指定することはできません。

代替クライアント ID は、クライアント・アプリケーションが以下のすべてを使用する場合にサポートされます。

代替クライアント ID を使用しない共用可能永続的ソケット接続での非同期出力の検索

クライアント・アプリケーションは、同じ共用可能永続的ソケット接続で非同期出力をキューに入れた対話を呼び出した同じアプリケーション内で、SYNC_RECEIVE_ASYNCOUTPUT または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_NOWAIT または SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT 対話を実行することにより、代替クライアント ID を使用しないで共用可能永続的ソケット接続での対話からの結果として発生して 転送されなかった出力メッセージのみを検索することができます。

以下の表には、異なるプロパティー値が指定されたときの「非同期出力メッセージの検索」(resumeTpipe) 対話の動作が示されています。
表 1. IMSConnectionSpec プロパティー値が指定されたときの resumeTpipe 対話の動作
対話 ソケット clientID reRouteName altClientID コメント
resumeTPIPE (altClientID 指定なし) 共用可能 NULL NULL NULL 非同期出力の検索は、前の対話と同じ接続で行う必要があります。そうしないと、非同期出力は検索できません。検索が失敗すると、メッセージは失われます。
resumeTPIPE (altClientID 指定なし) 共用可能 NULL myRR NULL 非同期メッセージの検索は、前の対話と同じ接続で行う必要があります。検索が失敗すると、メッセージは myRR に転送されます。
resumeTPIPE (altClientID 指定あり) 共用可能 NULL 該当なし myTPIPE TPIPE「myTPIPE」からの非同期メッセージの検索です。reRouteName および altClientID は互いに排他的で、同時に使用できません。
resumeTPIPE 専用 myCID 該当なし 該当なし TPIPE「myCID」からの非同期メッセージの検索です。
注: 共用可能永続的ソケット接続では、SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT 対話の コミット・モードは、この対話の IMSInteractionSpec で設定されている値に関わらず、IMS TM リソース・アダプターによって 自動的に内部的に 0 に設定されます。 この動作は、専用永続的ソケット接続で 行われる SYNC_RECEIVE_ASYNCOUTPUT_SINGLE_WAIT/NOWAIT 対話の動作と異なります。 専用ソケット接続では、コミット・モードを明示的に 0 に設定する必要があります。

フィードバック