2.5.10 EJBクライアントでトラブルが発生した場合
グローバルトランザクションを使用しているEJBクライアントがダウンした場合,グローバルトランザクションをリカバリする必要があります。グローバルトランザクションのリカバリは,EJBクライアントを再起動することで実行できます。
グローバルトランザクションのリカバリの処理が完了したかどうかを確認する方法を次に示します。
-
アプリケーションサーバでcjlisttrnコマンドを実行して,トランザクションがアクティブな状態になっているかを確認します。cjlisttrnコマンドの詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjlisttrn(稼働中のJ2EEサーバのトランザクション情報の表示)」を参照してください。
-
リソースアダプタを停止できるかどうかを確認してください。停止できる場合はグローバルトランザクションのリカバリ処理が完了しています。
-
アプリケーションサーバが正常停止できるかどうかを確認してください。正常停止できる場合はグローバルトランザクションのリカバリ処理が完了しています。
-
各リソースが提供するツール,コマンドなどを使用して確認してください。
また,複数のEJBクライアントが存在する場合に,どのEJBクライアントがグローバルトランザクションのリカバリに必要なのかを調査する手順を次に示します。
-
cjlisttrnコマンドを-pendingオプションを指定して実行して未決着のトランザクションを確認します。
- 実行形式
cjlisttrn [<サーバ名称>] -pending -bqual
- 実行例
-
cjlisttrn MyServer -pending -bqual
-
手順1.で確認した未決着のトランザクションから,次のすべての条件に当てはまるトランザクションがあるかどうかを確認します。
-
cjlisttrnコマンドを発行するたびに経過時間が増加している
-
ブランチの種類が「Sub」または「Sub(recovered)」である
-
グローバルトランザクションIDに,停止したEJBクライアントの起動時に出力されるKFCB40051-IメッセージのTmHashの値が含まれる
これらのすべての条件に当てはまるトランザクションが,グローバルトランザクションのリカバリに必要です。
-