非同期アプリケーション連携実行基盤においてシステムでエラーが発生した場合、業務データをリカバリする方法を説明します。
なお、コマンドによるリカバリ方法については、“Interstage Business Application Server リファレンス”の“apfwrecovfile”または“apfwrecovmsg”を参照してください。
システムがダウンした場合、業務データのメッセージはキューに滞留、またはフロー定義の異常処理定義に従って異常処理が行われています。
業務データのメッセージを以下の手順で確認し、リカバリを行ってください。
OSのシステムログを確認し、エラーメッセージが出力されている場合は、メッセージ集の対処に従い、対処してください。
標準ログを、“Error-”および“IBS-AP-SYSTEM”という文字列で検索してください。
2の検索でログが抽出された場合、フロー定義の異常処理定義に従って、異常処理が行われています。異常処理が行われている業務データのメッセージを検索したログから確認し、コマンドでリカバリを行ってください。
その後、システムを再起動した後、リカバリした業務データのメッセージが、フロー定義に従って正しく遷移されていることを確認してください。標準ログを用いて確認する場合は、リカバリした業務データのコリレーションIDと“IBS-AP-SYSTEM”という文字列を利用して検索し、目視で確認してください。
システムがハングアップした場合、業務データのメッセージはキューに滞留、またはフロー定義の異常処理定義に従って異常処理が行われています。
業務データのメッセージを以下の手順で確認し、リカバリを行ってください。
OSのシステムログを確認し、エラーメッセージが出力されている場合は、メッセージ集の対処に従い、対処してください。
標準ログを、“Error-”および“IBS-AP-SYSTEM”という文字列で検索してください。
2の検索でログが抽出された場合、フロー定義の異常処理定義に従って、異常処理が行われています。異常処理が行われている業務データのメッセージを検索したログから確認し、コマンドでリカバリを行ってください。
2の検索でログが抽出されなかった場合、業務データのメッセージがフロー定義の遷移途中でキューに滞留している可能性があります。結果受信キューまたはフロー定義の終点に届いていないメッセージを確認し、そのコリレーションIDをキーにして、標準ログを検索してください。抽出されたログの最後が、業務データのメッセージの現在の状況を表します。それに従い、対処を行ってください。
システムを再起動した後、リカバリしたメッセージがフロー定義に従って正しく遷移されていることを確認してください。標準ログを用いて確認する場合は、リカバリした業務データのコリレーションIDと“IBS-AP-SYSTEM”という文字列を利用して検索し、目視で確認してください。
“Error-EvacuateMessage-ErrorQueue”という文字列をキーにし、標準ログからログを検索します。
以下に、ログを検索する例を示します。
2004/11/20 19:07:11.121 [ContextID] IBS-AP-SYSTEM Error-EvacuateMessage-ErrorQueue 8028 [Queue001] FlowA ID0001 ***** ***** ***** ***** ErrorMessage ***** ***** |
1で抽出したログのコリレーションID“ID001”、および“IBS-AP-SYSTEM”という文字列をキーにし、標準ログからログを検索します。
抽出されたログの中から、“Error-EvacuateMessage-ErrorQueue”という文字列がある行の周辺のログを以下に示します。
“Error-EvacuateMessage-ErrorQueue”がある行を太字にしています。
2004/11/20 19:07:11.000 [ContextID] IBS-AP-SYSTEM Apfw-Activity-Start 8025 [Queue001] FlowA ID0001 ***** ***** ***** ***** Normal ***** ***** 2004/11/20 19:07:11.002 [ContextID] IBS-AP-SYSTEM Business-Application-Call 8017 [Queue001] FlowA ID0001 BusinessApp BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:07:11.002 [ContextID] IBS-AP-SYSTEM Business-Application-Call 8017 [Queue001] FlowA ID0001 BusinessApp.throwException BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:07:11.110 [ContextID] IBS-AP-SYSTEM Business-Application-Error 8019 [Queue001] FlowA ID0001 BusinessApp.throwException BusinessApplication JavaApplication ***** Normal FSP_INTS-BAS_AP: エラー: 1258: 業務処理実行アプリケーションのメソッドから例外が発行されました: フロー定義名=FlowA, コリレーションID=ID0001, アプリケーション=処理1, クラス名=BusinessApp, メソッド名=throwException(java.lang.Integer, java.lang.String, java.lang.String), 例外情報=java.lang.NullPointerException] ***** 2004/11/20 19:07:11.110 [ContextID] IBS-AP-SYSTEM Business-Application-Error 8019 [Queue001] FlowA ID0001 BusinessApp BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:07:11.111 [ContextID] IBS-AP-SYSTEM Apfw-Activity-End 8027 [Queue001] FlowA ID0001 ***** ***** ***** ***** Normal ***** ***** 2004/11/20 19:07:11.121 [ContextID] IBS-AP-SYSTEM Error-ErrorProcess-Start 8033 [Queue001] FlowA ID0001 ***** ***** ***** ***** ErrorMessage ***** ***** 2004/11/20 19:07:11.121 [ContextID] IBS-AP-SYSTEM Error-EvacuateMessage-ErrorQueue 8028 [Queue001] FlowA ID0001 ***** ***** ***** ***** ErrorMessage ***** ***** 2004/11/20 19:07:11.122 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Call 8021 [Queue001] FlowA ID0001 ***** ***** ***** EvacuateErrorQueueRoute ErrorMessage ***** ErrorQueue 2004/11/20 19:07:11.210 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Normal 8022 [Queue001] FlowA ID0001 ***** ***** ***** EvacuateErrorQueueRoute ErrorMessage ***** ErrorQueue 2004/11/20 19:07:11.210 [ContextID] IBS-AP-SYSTEM Error-ErrorProcess-End 8034 [Queue001] FlowA ID0001 ***** ***** ***** ***** ErrorMessage ***** ***** 2004/11/20 19:23:34.820 [ContextID] IBS-AP-SYSTEM Apfw-Activity-Start 8025 [Queue001] FlowA ID0001 ***** ***** ***** ***** Normal ***** ***** 2004/11/20 19:23:34.822 [ContextID] IBS-AP-SYSTEM Business-Application-Call 8017 [Queue001] FlowA ID0001 BusinessApp BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:23:34.824 [ContextID] IBS-AP-SYSTEM Business-Application-Call 8017 [Queue001] FlowA ID0001 (java.lang.String)setData(java.lang.Boolean) BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:23:34.843 [ContextID] IBS-AP-SYSTEM Business-Application-Normal 8018 [Queue001] FlowA ID0001 (java.lang.String)setData(java.lang.Boolean) BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:23:34.843 [ContextID] IBS-AP-SYSTEM Business-Application-Normal 8018 [Queue001] FlowA ID0001 BusinessApp BusinessApplication JavaApplication ***** Normal ***** ***** 2004/11/20 19:23:34.844 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Call 8021 [Queue001] FlowA ID0001 ***** ***** ***** NormalRoute Normal ***** Queue2 2004/11/20 19:23:34.912 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Normal 8022 [Queue001] FlowA ID0001 ***** ***** ***** NormalRoute Normal ***** Queue2 2004/11/20 19:23:34.912 [ContextID] IBS-AP-SYSTEM Apfw-Activity-End 8027 [Queue001] FlowA ID0001 ***** ***** ***** ***** Normal ***** ***** |
目視で、“Error-EvacuateMessage-ErrorQueue”という文字列がある行より後のログを確認します。“Error-ErrorProcess-End”という文字列のある行が、異常処理を終了したことを示し、メッセージ退避処理そのものが終了したことを示します。その次の“Apfw-Activity-Start”という文字列がある行が、メッセージ再送による処理が開始されたことを示し、正しく再送できたことが確認できます。この行の時間は、メッセージ再送処理を行った時間と同じになります。
“IBS-AP-SYSTEM”、調査対象のメッセージのコリレーションID、および“Error”という文字列で標準ログからログを検索します。
以下のようなログが抽出されます。
2004/11/20 21:34:04.243 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Error 8023 [Queue001] FlowA ID0001 ***** ***** ***** NormalRoute Normal FSP_INTS-BAS_AP: エラー: 1509: メッセージの送信でエラーが発生しました。(エラー情報=UX:JMS:エラー:jms2573: イベントチャネルは閉塞状態のため利用できません。 METHOD 'ChannelUtil.local_begin', EXCEPTION 'org.omg.CORBA.NO_RESOURCES: CORBA_Request_get_response vmcid: 0x464a0000 minor code: 2491 completed: No',JMSDestination名=Queue002) Queue002 (注1) 2004/11/20 21:34:04.341 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Error 8023 [Queue001] FlowA ID0001 ***** ***** ***** AgencyRoute Normal FSP_INTS-BAS_AP: エラー: 1509: メッセージの送信でエラーが発生しました。(エラー情報=UX:JMS:エラー:jms2573: イベントチャネルは閉塞状態のため利用できません。 METHOD 'ChannelUtil.local_begin', EXCEPTION 'org.omg.CORBA.NO_RESOURCES: CORBA_Request_get_response vmcid: 0x464a0000 minor code: 2491 completed: No',JMSDestination名=Queue003) Queue003 (注2) 2004/11/20 21:34:04.409 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Error 8023 [Queue001] FlowA ID0001 ***** ***** ***** NormalRoute Normal FSP_INTS-BAS_AP: エラー: 1509: メッセージの送信でエラーが発生しました。(エラー情報=UX:JMS:エラー:jms2573: イベントチャネルは閉塞状態のため利用できません。 METHOD 'ChannelUtil.local_begin', EXCEPTION 'org.omg.CORBA.NO_RESOURCES: CORBA_Request_get_response vmcid: 0x464a0000 minor code: 2491 completed: No',JMSDestination名=Queue002) Queue002 (注1) 2004/11/20 21:34:04.534 [ContextID] IBS-AP-SYSTEM Message-sendMessageQueue-Error 8023 [Queue001] FlowA ID0001 ***** ***** ***** AgencyRoute Normal FSP_INTS-BAS_AP: エラー: 1509: メッセージの送信でエラーが発生しました。(エラー情報=UX:JMS:エラー:jms2573: イベントチャネルは閉塞状態のため利用できません。 METHOD 'ChannelUtil.local_begin', EXCEPTION 'org.omg.CORBA.NO_RESOURCES: CORBA_Request_get_response vmcid: 0x464a0000 minor code: 2491 completed: No',JMSDestination名=Queue003) Queue003 (注2) |
注1) “NormalRoute”という文字列が示されている行のログが、通常ルートの遷移先キュー“Queue002”が閉塞されているため、エラーが発生していることを示します。
注2) “AgencyRoute”という文字列が示されている行のログが、代行ルートの遷移先キュー“Queue003”が閉塞されているため、エラーが発生していることを示します。
これによって、通常ルートおよび代行ルートがメッセージ遷移途中でキュー閉塞し、それぞれ2回ずつ閉塞事象が発生していたために、本例では時間がかかったことがわかります。
ほかにも、メッセージIDなどを検索キーに組み合わせることにより、任意のログを抽出することが可能です。
ログの検索方法 | 抽出されたログの見方 | エラーへの対処 |
---|---|---|
“Error-EvacuateMessage-SeriarizeFile”という文字列で標準ログからログを検索します。 | 抽出されたログの数が、シリアライズファイル化されたメッセージ数となります。 | 抽出されたログの前後を目視で確認して、エラー原因を示すログのメッセージの対処を行ってください。 |
ログの検索方法 | 抽出されたログの見方 | エラーへの対処 |
---|---|---|
“Error-EvacuateMessage-ErrorQueue”という文字列で標準ログからログを検索します。 | 抽出されたログの数が、退避されたメッセージ数となります。 | 抽出されたログの前後を目視で確認して、エラー原因を示すログのメッセージの対処を行ってください。 |
ログの検索方法 | 抽出されたログの見方 | エラーへの対処 |
---|---|---|
“Business-Application”および任意のクラス名をキーとし、標準ログからログを検索します。 | 抽出されたログが、任意のアプリケーションのログとなります。“Business-Application-Error”とあった場合、エラーが発生しています。抽出したログの前後を目視で確認し、動作を確認してください。 | “Business-Application-Error”とあった場合は、そのエラーの原因となった例外情報が同じログの行に出力されます。 |
ログの検索方法 | 抽出されたログの見方 | エラーへの対処 |
---|---|---|
復帰しないメッセージのコリレーションID、および“IBS-AP-SYSTEM”という文字列でログを検索します。 | 抽出されたログの、最後の行を確認してください。 | エラーとなっている業務処理実行アプリケーションが配備されているワークユニットを停止してから、業務処理実行アプリケーションの処理を確認してください。 |