Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド
TP1アダプタの実行時に発生した障害の対策方法について説明します。
TP1アダプタの実行時に障害が発生した場合,TP1アダプタの障害情報のほかに,TP1/Client/Jトレース情報を出力できます。
サービスリクエスタからTP1アダプタへの要求中にTP1アダプタで障害が発生した場合,RPCの通信形態に応じてTP1アダプタのエラー情報または例外をHCSCサーバへ通知します。
RPCの通信形態による障害情報の通知について次に示します。
RPCの通信形態 | HCSCサーバへ通知する情報 |
---|---|
同期応答型 | エラー情報(エラー情報の詳細は,「7.7.6(3) TP1アダプタの障害情報」を参照してください) system例外などの予期しない障害が発生した場合,例外を通知します。 |
非応答型 | 例外 |
障害が発生した場合に,サービスリクエスタで発生する事象についての詳細は,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「8. サービスリクエスタの作成」を参照してください。
ビジネスプロセスで使用しているTP1アダプタから,TP1アダプタで発生した障害情報(エラー情報)が通知された場合に,faultDetail要素のXMLドキュメントをビジネスプロセス定義から参照できるよう設定できます。そのためには,事前にfaultDetail要素への要素の追加と,TP1アダプタ環境定義ファイルへの拡張オプションの指定が必要です。
エラー情報をビジネスプロセス定義から参照するためには,faultDetail要素のXMLドキュメントに,障害発生時のエラーメッセージのIDおよびメッセージ本文を格納する要素を次の図のように追加します。これによって,ビジネスプロセス上でメッセージごとのエラー処理が定義できるようになります。
図7-94 faultDetail要素への障害発生時のエラーメッセージのIDおよびメッセージ本文を格納する要素の追加
faultDetail要素での要素の追加については,「7.7.6(3) TP1アダプタの障害情報」を参照してください。
ビジネスプロセスを利用してエラー情報を参照する場合,TP1アダプタ環境定義ファイルに拡張オプションを指定する必要があります。編集手順については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.6 TP1アダプタを定義する」の定義の詳細に関する説明を参照してください。拡張オプションについては,マニュアル「サービスプラットフォーム リファレンス」の「TP1アダプタ環境定義ファイル」を参照してください。
エラーの発生原因は,エラー情報に含まれるmessageId要素とfactor要素の値の組み合わせから判別できます。messageId要素およびfactor要素の値の組み合わせと,エラーの発生原因の対応を次の表に示します。
表7-73 messageId要素およびfactor要素の値の組み合わせとエラーの発生原因の対応
messageId要素 | factor要素 | 発生原因(TP1/Client/Jのメソッド) |
---|---|---|
KDEE11007-E | other | openConnectionメソッドで例外が発生 |
KDEE11025-E | other | rpcCallメソッドで例外が発生 |
KDEE11015-E | internal | openConnectionメソッドで例外が発生 |
other | rpcCallメソッドで例外が発生 |
TP1アダプタは,障害情報にエラー情報を使用して障害通知をします。エラー情報の各設定値を次の表に示します。
要素名 | 型 | 設定値 | 説明 |
---|---|---|---|
faultCode | String | Client | 送られてきたメッセージの構成に異常があるなど,クライアント側のエラーです。 |
Server | 通信エラーなど,サーバ側のエラーです。 | ||
faultString | String | <TP1アダプタが出力するメッセージのメッセージテキスト> | 詳細は,マニュアル「サービスプラットフォーム メッセージ」の「2.11 KDEE10000〜KDEE13999のメッセージ」を参照してください。 |
faultActor | String | <サービスアダプタ名> | エラー情報を通知したサービスアダプタ名です。 |
faultDetail | Document(XML) | 「(a) TP1アダプタのfaultDetailの内容」参照 | 「(a) TP1アダプタのfaultDetailの内容」を参照してください。 |
faultDetailは次に示す形式で記述されています。
<?xml version="1.0" encoding="UTF-8"?> <detail> <content>・・・</content> <factor>・・・</factor> </detail> |
<?xml version="1.0" encoding="UTF-8"?> <detail> <content>・・・</content> <factor>・・・</factor> <messageId>・・・</messageId> <message>・・・</message> </detail> |
faultDetailの内容を共通要素とオプション要素に分けて次に示します。
content要素の設定値 | factor要素の設定値※ | 説明 | 対策 |
---|---|---|---|
ResourceDeficiencyFault (リソース不足) |
internal | コネクションリソースが足りません。 | RPC通信用の資源が不足しています。必要に応じて同時に処理できるRPC要求の最大数を増やしたあと,再度TP1アダプタを開始してください。 |
RpcErrorFault (通信失敗) |
other | 接続先システムのエラーによって,RPC通信が失敗しました。 | 接続先システムの状態を確認してください。 |
internal | TP1アダプタ内部のエラーによって,RPC通信が失敗しました。 | TP1アダプタの出力メッセージを確認して対策してください。 | |
unexpected | 予期しないエラーによって,RPC通信が失敗しました。 | TP1アダプタ管理者に連絡してください。 | |
AdapterFault (内部障害) |
internal | TP1アダプタ内部でエラーが発生しました。 | TP1アダプタの出力メッセージを確認して対策してください。 |
DataErrorFault (電文不正) |
internal | 電文のフォーマット不正によって,通信が失敗しました。 | 正しい電文フォーマットに修正したあと,再度要求してください。 |
要素 | 説明 |
---|---|
messageId | TP1アダプタが出力するエラーメッセージのメッセージIDです。 |
message | TP1アダプタが出力するエラーメッセージのメッセージテキストです。 |
TP1アダプタで障害が発生した場合,障害対策に必要な情報がメッセージまたはトレースに出力されます。TP1アダプタで取得できるログおよびトレースの種類を次に示します。
表7-77 ログ・トレースの種類(TP1アダプタの場合)
ログ・トレース | 出力情報 | 説明 |
---|---|---|
メッセージログ | TP1アダプタで発生した各種情報が,メッセージとして出力されます。 | 稼働情報(起動・停止・障害など)をメッセージとして確認できます。なお,メッセージログの出力先はアプリケーションサーバ全体で共通のため,システムの稼働状況を一括して確認できます。 |
メソッドトレース | TP1アダプタの内部メソッドの開始時と終了時に,次の情報が出力されます。
|
内部メソッド発行の時刻やシーケンスを確認できます。 |
データトレース | TP1アダプタが提供するメソッドの入出力のデータ情報が出力されます。
|
送受信データ内容および引数の情報を取得することで,データ(内部データ)の正当性を確認できます。 |
例外ログ | TP1アダプタが提供するメソッドで発生した例外情報(スタックトレース)が出力されます。
|
例外が発生した時刻,メソッドを確認できます。 |
ログまたはトレースを出力する場合の注意事項については,「7.3.4(1) 全般的な注意事項」を参照してください。
メッセージログに,TP1アダプタの開始・停止時のインフォメーション系メッセージや,RPC通信障害などのエラーメッセージが出力されます。
メッセージログの出力内容や出力先については,「7.4.1 メッセージログ」を参照してください。また,メッセージログの出力レベルを変更する方法については,マニュアル「サービスプラットフォーム リファレンス」の「TP1アダプタ実行環境プロパティファイル」のmessage.levelプロパティを参照してください。
メソッドトレースは,内部メソッド発行の時刻やシーケンスを確認できます。保守員が障害解析のために使用します。
<J2EEサーバのログ出力ディレクトリ>\CSCADP\TP1ADP\maintenance\<サービスID>
表7-78 メソッドトレースのトレースファイル名(TP1アダプタ)
トレースファイルの出力モード | トレースファイル名 |
---|---|
ラップアラウンドモードの場合 | mtdtrace<面数>.log |
シフトモードの場合 | mtdtrace.log |
図7-95 メソッドトレースの出力形式
表7-79 メソッドトレースに出力される項目(TP1アダプタ)
項目 | 内容 |
---|---|
番号 | メソッドトレースの出力通番が表示されます。 |
日付 | メソッドトレースの取得日付がyyyy/mm/ddの形式で出力されます。 |
時刻 | メソッドトレースの取得時刻がhh:mm:ss.SSSの形式で出力されます。 ローカル時刻でミリ秒単位の時刻を示します。 |
製品ID | 製品を特定するための識別子として,TP1アダプタを示す「ADPTP1」と,バージョン情報が表示されます。 バージョン情報の形式は次のとおりです。
|
pid | プロセスを識別するためのIDが出力されます。 |
tid | スレッドを識別するためのIDが出力されます。 |
ID | 空白 |
種別 | トレース取得ポイントの種別が出力されます。
|
クラス名 | トレースを取得するクラス名が出力されます。 30文字未満の場合は左詰めされ,足りない文字はスペースで補われます。 |
メソッド名 | トレースを取得するメソッド名 25文字未満の場合は左詰めされ,足りない文字はスペースで補われます。 |
入出力情報 | トレースを取得するメソッドの入出力情報(引数や戻り値の値など)が出力されます。 |
CRLF | レコード終端符号が出力されます。 |
データトレースは,送受信データ内容を取得することで,データ(内部データ)の正当性を確認できます。
<J2EEサーバのログ出力ディレクトリ>\CSCADP\TP1ADP\maintenance\<サービスID>
表7-80 データトレースのトレースファイル名(TP1アダプタ)
トレースファイルの出力モード | トレースファイル名 |
---|---|
ラップアラウンドモードの場合 | dattrace<面数>.log |
シフトモードの場合 | dattrace.log |
図7-96 データトレースの出力形式
表7-81 データトレースに出力される項目(TP1アダプタ)
項目 | 内容 |
---|---|
番号 | データトレースの出力通番が表示されます。 |
日付 | データトレースの取得日付がyyyy/mm/ddの形式で出力されます。 |
時刻 | データトレースの取得時刻がhh:mm:ss.SSSの形式で出力されます。 ローカル時刻でミリ秒単位の時刻を示します。 |
製品ID | 製品を特定するための識別子として,TP1アダプタを示す「TP1ADP」と,バージョン情報が表示されます。 バージョン情報の形式は次のとおりです。
|
pid | プロセスを識別するためのIDが出力されます。 |
tid | スレッドを識別するためのIDが出力されます。 |
ID | 空白 |
種別 | データの入出力種別が出力されます。
|
形式 | データの形式が出力されます。
|
電文情報 | 送受信電文情報が出力されます。
|
CRLF | レコード終端符号が出力されます。 |
例外ログには例外情報が出力されます。例外ログの概要については,「7.4.6(1) 例外ログ」を参照してください。
<J2EEサーバのログ出力ディレクトリ>\CSCADP\TP1ADP\maintenance\<サービスID>
表7-82 例外ログのログファイル名(TP1アダプタ)
ログファイルの出力モード | ログファイル名 |
---|---|
ラップアラウンドモードの場合 | exception<面数>.log |
シフトモードの場合 | exception.log |
図7-97 例外ログに出力される形式
表7-83 例外ログに出力される項目(TP1アダプタ)
項目 | 内容 |
---|---|
番号 | 例外ログの出力通番が表示されます。 |
日付 | 例外ログの取得日付がyyyy/mm/ddの形式で出力されます。
|
時刻 | 例外ログの取得時刻がhh:mm:ss.SSSの形式で出力されます。
|
製品ID | 製品を特定するための識別子として,TP1アダプタを示す「ADPTP1」が表示されます。 |
pid | プロセスを識別するためのIDが出力されます。 |
tid | スレッドを識別するためのIDが出力されます。 |
ID | 空白 |
スタックトレース情報 | スタックトレース情報が出力されます。 |
CRLF | レコード終端符号が出力されます。 |
TP1/Client/Jのトラブルシュート機能では次のトレースを取得できます。トラブルシュートを容易にするために,トレース情報の取得をお勧めします。トレース情報の詳細は,マニュアル「サービスプラットフォーム 解説」の「付録A.3 TP1/Client/Jの障害対策」を参照してください。
障害発生時は,トレース情報を基に原因を調査してください。なお,障害発生時にトレースを取得していない場合は,トレースを取得するように設定したあと,障害が発生した現象を再現してトレース情報を取得してください。
TP1/Client/JのRPC通信を使用したシステムでは,障害の発生をリアルタイムに検出できません。障害検出は時間監視のタイムアウト時となります。それを考慮して,応答監視時間には最適な値を設定してください。応答監視時間は,TP1アダプタ通信構成定義ファイルのwatch_time要素で設定します。
常設コネクションを確立する場合,RAPサーバへのコネクション確立中にRAPサーバ側でシステムダウンなどの障害が発生すると,TP1アダプタではコネクションの解放を検知できないため,通信実行時に異常終了となります。この場合,TP1アダプタからの障害通知は,応答監視時間の満了後になります。
RPC通信時にTP1/Client/Jが提供する例外について,factor要素(要因)をメソッドごとに次に示します。
例外 | 説明 | 対応するfactor要素 |
---|---|---|
ErrIOErrException | 何らかの入出力例外が発生しました。 | internal |
ErrHostUndefException | rapリスナーのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていません。 | internal |
ErrTimedOutException | rapリスナーとのコネクション確立中にタイムアウトが発生しました。 | other |
ErrNetDownException | rapリスナーとの通信でネットワーク障害が発生したか,通信先のTP1/Server Baseが稼働していません。 | other |
ErrNoBufsException | rapリスナーおよびrapサーバでメモリ不足が発生しました。 | other |
ErrNotUpException | rapリスナーおよびrapサーバが稼働していません。 | other |
ErrSyserrException | システムエラーが発生しました。 | internal |
ErrProtoException | メソッドの発行順序に誤りがあります。コネクションを確立している間に再度openConnectionメソッドが呼び出されました。 | unexpected |
ErrInvalidArgsException | 引数の指定に誤りがあります。 | unexpected |
例外 | 説明 | 対応するfactor要素 |
---|---|---|
ErrInvalidArgsException | 引数の指定に誤りがあります。この場合,詳細メッセージに誤った引数名が設定されます。 | unexpected |
例外 | 説明 | 対応するfactor要素 |
---|---|---|
ErrInvalidArgsException | 引数の指定に誤りがあります。この場合,詳細メッセージに誤った引数名が設定されます。 | unexpected |
ErrProtoException | メソッドの発行順序に誤りがあります。openConnectionメソッドが呼び出されていません。 | unexpected |
ErrNoBufsException | メモリ不足が発生しました。 | internal |
ErrNetDownException | ネットワーク障害が発生したか,通信先のTP1/Server Baseが稼働していません。 | other |
ErrTimedOutException | このメソッドの処理でタイムアウトが発生したか,サービス要求先SPPが処理を完了する前に異常終了しました。 | other |
ErrMessageTooBigException | in_len引数に指定した入力パラメタ長が最大値を超えています。 | internal |
ErrReplyTooBigException | サーバから返された応答の長さが,CUPで用意した領域(out_data引数の指定値)の長さを超えています。 | other |
ErrNoSuchServiceGroupException | group引数に指定したサービスグループ名は定義されていません。 | internal |
ErrNoSuchServiceException | service引数に指定したサービス名は定義されていません。 | internal |
ErrServiceClosedException | service引数に指定したサービス名が存在するサービスグループは閉塞されています。 | other |
ErrServiceTerminatingException | service引数に指定したサービスは終了処理中です。 | other |
ErrServiceNotUpException | サービス要求したSPPが稼働していないか,サービス要求したSPPが処理を完了する前に異常終了しました。この例外はTP1/Client/J環境定義にdcwatchtim=0を指定(応答を無限に待つ)した場合に返されます。 | other |
ErrNotUpException | 指定したサービスが存在するノードのTP1/Server Baseが稼働していません。この場合,異常終了,停止中,終了処理中,およびネットワーク障害の発生が考えられます。 | other |
ErrSyserrAtServerException | 指定したサービスでシステムエラーが発生しました。 | other |
ErrSyserrException | システムエラーが発生しました。 | internal |
ErrNoBufsAtServerException | 指定したサービスでメモリ不足が発生しました。 | other |
ErrInvalidReplyException | サービス関数が返した応答の長さが1からDCRPC_MAX_MESSAGE_SIZEで指定した値までの範囲にありません。 | other |
ErrInitializingException | サービス要求したノードにあるTP1/Server Baseは開始処理中です。 | other |
ErrTrnchkException | ノード間負荷バランス機能を使用している環境で,複数のSPPのトランザクション属性が一致していません。または,負荷を分散する先のノードにあるTP1/Server Baseのバージョンが,TP1/Client/Jのバージョンよりも古いため,ノード間負荷バランス機能を実行できません。この例外は,ノード間負荷バランス機能を使用しているSPPにサービス要求した場合にだけ返されます。 | internal |
ErrServerBusyException | サービス要求先のソケット受信型サーバが,サービス要求を受信できません。 | other |
ErrSecchkException | サービス要求先のSPPは,セキュリティ機能で保護されています。rpcCallメソッドを呼び出したCUPには,SPPへのアクセス権限がありません。 | other |
ErrServiceTerminatedException | サービス要求したSPPが,処理を完了する前に異常終了しました。この例外はrapリスナーサービス定義のrpc_extend_functionオペランドに00000001を指定した場合にだけ返されます。rpc_extend_functionオペランドに00000000を指定,またはオペランドを省略した場合は,ErrTimedOutExceptionまたはErrServiceNotUpExceptionが返されます。 | other |
ErrIOErrException | 何らかの入出力例外が発生しました。rapサーバが問い合わせ間隔の時間監視でタイムアウトし,コネクションを切断したことも考えられます。 | internal |
ErrTestmodeException | テストモードのSPPに対してサービス要求を行いました。 | other |
ErrConnfreeException | rapサーバとの常設コネクションが切断されました。または,TP1/Webとの擬似セッションが切断されました。 | other |
ErrHostUndefException |
|
internal |
ErrInvalidPortException |
|
internal |
All Rights Reserved. Copyright (C) 2012, 2019, Hitachi, Ltd.