Cosminexus V9 BPM/ESB基盤 サービスプラットフォーム システム構築・運用ガイド

[目次][用語][索引][前へ][次へ]

7.7.6 TP1アダプタ実行時の障害対策

TP1アダプタの実行時に発生した障害の対策方法について説明します。

TP1アダプタの実行時に障害が発生した場合,TP1アダプタの障害情報のほかに,TP1/Client/Jトレース情報を出力できます。

<この項の構成>
(1) 障害発生時にHCSCサーバに通知する情報
(2) ビジネスプロセスを利用したエラー情報の参照
(3) TP1アダプタの障害情報
(4) TP1アダプタのログ・トレースの種類
(5) TP1/Client/Jのトレース情報の採取
(6) TP1/Client/Jの適切な応答監視時間の設定
(7) TP1/Client/Jの例外に対するfactor要素の対応表

(1) 障害発生時にHCSCサーバに通知する情報

サービスリクエスタからTP1アダプタへの要求中にTP1アダプタで障害が発生した場合,RPCの通信形態に応じてTP1アダプタのエラー情報または例外をHCSCサーバへ通知します。

RPCの通信形態による障害情報の通知について次に示します。

表7-72 通信形態による障害情報の通知

RPCの通信形態 HCSCサーバへ通知する情報
同期応答型 エラー情報(エラー情報の詳細は,「7.7.6(3) TP1アダプタの障害情報」を参照してください)
system例外などの予期しない障害が発生した場合,例外を通知します。
非応答型 例外

障害が発生した場合に,サービスリクエスタで発生する事象についての詳細は,マニュアル「サービスプラットフォーム 開発ガイド 基本開発編」の「8. サービスリクエスタの作成」を参照してください。

(2) ビジネスプロセスを利用したエラー情報の参照

ビジネスプロセスで使用しているTP1アダプタから,TP1アダプタで発生した障害情報(エラー情報)が通知された場合に,faultDetail要素のXMLドキュメントをビジネスプロセス定義から参照できるよう設定できます。そのためには,事前にfaultDetail要素への要素の追加と,TP1アダプタ環境定義ファイルへの拡張オプションの指定が必要です。

(a) faultDetail要素への要素の追加

エラー情報をビジネスプロセス定義から参照するためには,faultDetail要素のXMLドキュメントに,障害発生時のエラーメッセージのIDおよびメッセージ本文を格納する要素を次の図のように追加します。これによって,ビジネスプロセス上でメッセージごとのエラー処理が定義できるようになります。

図7-94 faultDetail要素への障害発生時のエラーメッセージのIDおよびメッセージ本文を格納する要素の追加

[図データ]

faultDetail要素での要素の追加については,「7.7.6(3) TP1アダプタの障害情報」を参照してください。

(b) TP1アダプタ環境定義ファイルへの拡張オプションの指定

ビジネスプロセスを利用してエラー情報を参照する場合,TP1アダプタ環境定義ファイルに拡張オプションを指定する必要があります。編集手順については,マニュアル「サービスプラットフォーム 開発ガイド 受付・アダプタ定義編」の「3.3.6 TP1アダプタを定義する」の定義の詳細に関する説明を参照してください。拡張オプションについては,マニュアル「サービスプラットフォーム リファレンス」の「TP1アダプタ環境定義ファイル」を参照してください。

(c) エラーの発生原因の調査

エラーの発生原因は,エラー情報に含まれる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メソッドで例外が発生

(3) TP1アダプタの障害情報

TP1アダプタは,障害情報にエラー情報を使用して障害通知をします。エラー情報の各設定値を次の表に示します。

表7-74 TP1アダプタが設定するエラー情報

要素名 設定値 説明
faultCode String Client 送られてきたメッセージの構成に異常があるなど,クライアント側のエラーです。
Server 通信エラーなど,サーバ側のエラーです。
faultString String <TP1アダプタが出力するメッセージのメッセージテキスト> 詳細は,マニュアル「サービスプラットフォーム メッセージ」の「2.11 KDEE10000〜KDEE13999のメッセージ」を参照してください。
faultActor String <サービスアダプタ名> エラー情報を通知したサービスアダプタ名です。
faultDetail Document(XML) (a) TP1アダプタのfaultDetailの内容」参照 (a) TP1アダプタのfaultDetailの内容」を参照してください。
(a) TP1アダプタのfaultDetailの内容

faultDetailは次に示す形式で記述されています。

faultDetailの内容を共通要素とオプション要素に分けて次に示します。

表7-75 faultDetailの内容(共通要素)

content要素の設定値 factor要素の設定値 説明 対策
ResourceDeficiencyFault
(リソース不足)
internal コネクションリソースが足りません。 RPC通信用の資源が不足しています。必要に応じて同時に処理できるRPC要求の最大数を増やしたあと,再度TP1アダプタを開始してください。
RpcErrorFault
(通信失敗)
other 接続先システムのエラーによって,RPC通信が失敗しました。 接続先システムの状態を確認してください。
internal TP1アダプタ内部のエラーによって,RPC通信が失敗しました。 TP1アダプタの出力メッセージを確認して対策してください。
unexpected 予期しないエラーによって,RPC通信が失敗しました。 TP1アダプタ管理者に連絡してください。
AdapterFault
(内部障害)
internal TP1アダプタ内部でエラーが発生しました。 TP1アダプタの出力メッセージを確認して対策してください。
DataErrorFault
(電文不正)
internal 電文のフォーマット不正によって,通信が失敗しました。 正しい電文フォーマットに修正したあと,再度要求してください。

(凡例)
internal:TP1アダプタの内部検出によるエラーです。
other:接続先システム状態の不正によるエラーです。
unexpected:予期しないエラーです。

注※
RPC通信時の障害では,TP1/Client/Jが提供する例外に対応して,factor要素(原因)が異なります。TP1/Client/Jが提供する例外についての詳細は,「(7) TP1/Client/Jの例外に対するfactor要素の対応表」を参照してください。

表7-76 faultDetailの内容(オプション要素)

要素 説明
messageId TP1アダプタが出力するエラーメッセージのメッセージIDです。
message TP1アダプタが出力するエラーメッセージのメッセージテキストです。

(4) TP1アダプタのログ・トレースの種類

TP1アダプタで障害が発生した場合,障害対策に必要な情報がメッセージまたはトレースに出力されます。TP1アダプタで取得できるログおよびトレースの種類を次に示します。

表7-77 ログ・トレースの種類(TP1アダプタの場合)

ログ・トレース 出力情報 説明
メッセージログ TP1アダプタで発生した各種情報が,メッセージとして出力されます。 稼働情報(起動・停止・障害など)をメッセージとして確認できます。なお,メッセージログの出力先はアプリケーションサーバ全体で共通のため,システムの稼働状況を一括して確認できます。
メソッドトレース TP1アダプタの内部メソッドの開始時と終了時に,次の情報が出力されます。
  • 日付
  • 時刻
  • 実行スレッド名
  • 内部メソッド名(TP1/Client/J提供のメソッドを含む)
  • 指定した引数の情報
内部メソッド発行の時刻やシーケンスを確認できます。
データトレース TP1アダプタが提供するメソッドの入出力のデータ情報が出力されます。
  • 日付
  • 時刻
  • 実行スレッド名
  • 内部メソッド名(TP1/Client/J提供のメソッドを含む)
  • 発生した例外
  • 指定した引数の情報
  • 入出力データの内容
送受信データ内容および引数の情報を取得することで,データ(内部データ)の正当性を確認できます。
例外ログ TP1アダプタが提供するメソッドで発生した例外情報(スタックトレース)が出力されます。
  • 日付
  • 時刻
  • 発生した例外
例外が発生した時刻,メソッドを確認できます。

ログまたはトレースを出力する場合の注意事項については,「7.3.4(1) 全般的な注意事項」を参照してください。

(a) メッセージログ

メッセージログに,TP1アダプタの開始・停止時のインフォメーション系メッセージや,RPC通信障害などのエラーメッセージが出力されます。

メッセージログの出力内容や出力先については,「7.4.1 メッセージログ」を参照してください。また,メッセージログの出力レベルを変更する方法については,マニュアル「サービスプラットフォーム リファレンス」の「TP1アダプタ実行環境プロパティファイル」のmessage.levelプロパティを参照してください。

(b) メソッドトレース

メソッドトレースは,内部メソッド発行の時刻やシーケンスを確認できます。保守員が障害解析のために使用します。

(c) データトレース

データトレースは,送受信データ内容を取得することで,データ(内部データ)の正当性を確認できます。

(d) 例外ログ

例外ログには例外情報が出力されます。例外ログの概要については,「7.4.6(1) 例外ログ」を参照してください。

(5) TP1/Client/Jのトレース情報の採取

TP1/Client/Jのトラブルシュート機能では次のトレースを取得できます。トラブルシュートを容易にするために,トレース情報の取得をお勧めします。トレース情報の詳細は,マニュアル「サービスプラットフォーム 解説」の「付録A.3 TP1/Client/Jの障害対策」を参照してください。

障害発生時は,トレース情報を基に原因を調査してください。なお,障害発生時にトレースを取得していない場合は,トレースを取得するように設定したあと,障害が発生した現象を再現してトレース情報を取得してください。

(6) TP1/Client/Jの適切な応答監視時間の設定

TP1/Client/JのRPC通信を使用したシステムでは,障害の発生をリアルタイムに検出できません。障害検出は時間監視のタイムアウト時となります。それを考慮して,応答監視時間には最適な値を設定してください。応答監視時間は,TP1アダプタ通信構成定義ファイルのwatch_time要素で設定します。

常設コネクションを確立する場合,RAPサーバへのコネクション確立中にRAPサーバ側でシステムダウンなどの障害が発生すると,TP1アダプタではコネクションの解放を検知できないため,通信実行時に異常終了となります。この場合,TP1アダプタからの障害通知は,応答監視時間の満了後になります。

(7) TP1/Client/Jの例外に対するfactor要素の対応表

RPC通信時にTP1/Client/Jが提供する例外について,factor要素(要因)をメソッドごとに次に示します。

(a) コネクション確立処理(openConnectionメソッド)

表7-84 コネクション確立失敗時の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

(凡例)
internal:TP1アダプタの内部検出によるエラーです。
other:接続先システム状態の不正によるエラーです。
unexpected:予期しないエラーです。

(b) 応答監視時間の設定(setdcwatchtimメソッド)

表7-85 応答監視時間設定失敗時のfactor要素対応表

例外 説明 対応するfactor要素
ErrInvalidArgsException 引数の指定に誤りがあります。この場合,詳細メッセージに誤った引数名が設定されます。 unexpected

(凡例)
unexpected:予期しないエラーです。

(c) RPC通信要求(rpcCallメソッド)

表7-86 RPC通信失敗時のfactor要素対応表

例外 説明 対応する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

rpcCallメソッドの場合
通信先となるTP1/Server Baseのホスト名がTP1/Client/J環境定義のdchostオペランドに指定されていないか,または指定に誤りがあります。

rpcCallToメソッドの場合
TP1アダプタ通信構成定義ファイルのstatic_host要素で,通信先となるTP1/Server Baseのホスト名の指定に誤りがあります。
internal
ErrInvalidPortException

rpcCallメソッドの場合
次の要因が考えられます。
  • リモートAPI機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcrapportオペランドが指定されていません。
  • スケジューラダイレクト機能を使用したRPCを行う場合,TP1/Client/J環境定義のdcscdportオペランドが指定されていません。

rpcCallToメソッドの場合
TP1アダプタ通信構成定義ファイルのstatic_port要素で,通信先となるTP1/Server Baseのポート番号の指定に誤りがあります。
internal

(凡例)
internal:TP1アダプタの内部検出によるエラーです。
other:接続先システム状態の不正によるエラーです。
unexpected:予期しないエラーです。