ページの先頭行へ戻る
Interstage Business Application ServerV10.1.0 解説書
Interstage

4.4.8 異常処理

アプリケーション連携実行基盤では、データベース処理の一時的なエラーなどの原因でアプリケーションに異常が発生した場合、後続のメッセージが処理できずにキューに滞り、業務全体が停止することを防止するための機能を提供します。
アプリケーションでのメッセージ処理に異常が発生した場合、フロー定義に設定したリトライ回数のリトライを行います。リトライを行っても問題が解決できない場合、業務処理がロールバックされメッセージ受信からワークユニットに設定したリトライ回数分、処理がリトライされます。しかし、リトライ後も異常が回復できない場合は、異常処理が実行されます。
異常処理では、以下の異常時の後処理を定義することができます。

異常処理では、上記の定義がされていない場合、または上記の処理を開始できない場合、メッセージをシリアライズファイルに退避します。更にシリアライズファイルへの退避にも失敗した場合は、ワークユニットを停止します。
なお、異常処理で行った処理結果はsyslogへ出力されます。
以下に異常処理の動作シーケンスを説明します。

注意

  • Javaの業務処理実行アプリケーションを使用する場合、異常処理を正しく動作させるためには、ワークユニットで、EJBのトランザクション管理種別を“Container”トランザクション属性を“Required”で指定してください。EJBのトランザクション管理種別を“Container”以外、またはトランザクション属性を“Required”以外で指定した場合、異常が発生したメッセージは異常時の後処理が行われずに削除されます。

  • 異常処理では、フロー定義に指定された情報をもとにエラー時の後処理を行います。そのため、メッセージに格納されたフロー定義情報が壊れているなどによりフロー定義情報の内容を解析できない場合は、異常処理定義で指定された後処理を行わずにメッセージをシリアライズファイルへ退避します。

また、“Interstage Business Application Server 運用ガイド(アプリケーション連携実行基盤編)”の“異常処理出口を使用したメッセージの復旧”を参考に、apfwconvfileコマンドを使用して異常となったメッセージ内容を修正し、apfwrecovmsgコマンドにより異常となったキューへメッセージを再送信することで、処理を復旧することもできます。
異常処理の詳細については、“Interstage Business Application Server アプリケーション開発ガイド”の“非同期アプリケーション連携実行基盤編”の“異常処理”を参照してください。