Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
J2EEサーバやリソースマネジャの障害で,プリペア状態またはヒューリスティック完了状態となった2フェーズトランザクションを決着させる機能です。グローバルトランザクションを使用する場合に有効になります。
J2EEサーバを開始すると,インポートされているリソースに対して,無条件にトランザクションの全面回復処理を実行します。また,トランザクション実行中にリソースマネジャがダウンした場合にも,部分回復処理をします。
なお,トランザクションの状態は,インプロセストランザクションサービスを使用している場合,サーバ管理コマンドのcjlisttrnコマンドで表示できます。また,停止中のJ2EEサーバのステータスファイルに残っている,未決着トランザクション情報はcjlisttrnfileコマンドで表示できます。
ライトトランザクションが有効なときには,トランザクションリカバリ機能は使用できません。
J2EEサーバを正常停止する時,J2EEサーバは未決着のトランザクションがないことを確認してから停止します。未決着のトランザクションがあるときは,それらが完了するまで無限に待ちます。また,そのトランザクションが決着するまでリソースを削除できません。
これに対して,システム開発時など,トランザクションを早急に解決する必要がない場合は,未決着トランザクションの確認時間にタイムアウトを設定できます。タイムアウトが発生した場合は,未決着のトランザクションの確認処理が完了していなくても,J2EEサーバの停止処理がされます。ただし,タイムアウトは,J2EEアプリケーション開発時などに設定してください。J2EEアプリケーション運用時には,トランザクションの信頼性を保証するために,タイムアウトを設定しないことをお勧めします。
タイムアウトの設定は,J2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,「3.15.13 実行環境での設定」を参照してください。
トランザクションリカバリについての注意事項を説明します。
J2EEサーバ起動時にXATransactionを利用するリソースアダプタの開始に失敗した場合,J2EEサーバはトランザクションリカバリを実行しないで,メッセージKDJE48605-Eを出力して強制停止します。この場合は,リソースアダプタの開始処理が失敗する原因を取り除いてから,J2EEサーバを再起動してください。これによって,プリペア状態またはヒューリスティック状態のトランザクションは決着されます。
トランザクションリカバリをする場合に使用するコネクション数に注意してください。
J2EEサーバでは,トランザクションサポートレベルがXATransactionの一つのリソースアダプタに対して,次のコネクションを確立します。
同一のリソースマネジャで必要となる最大コネクション数は,次の式で示す値になります。リソースマネジャにコネクション数の上限がある場合は,注意してください。
ここでは,稼働中および停止中のJ2EEサーバのトランザクションの情報を確認する方法について説明します。稼働中のJ2EEサーバでのトランザクションの状態や,停止中のJ2EEサーバでの未決着のトランザクションの有無などの情報を確認できます。
J2EEサーバで稼働中のトランザクションの情報を確認できます。トランザクションの状態,グローバルトランザクションID,経過時間,ブランチの種類などの情報を確認できます。
稼働中のトランザクションの確認には,cjlisttrnコマンドを使用します。実行形式と実行例を次に示します。
cjlisttrn [<サーバ名称>] -bqual |
cjlisttrn MyServer -bqual
また,未決着のトランザクションの状態も確認できます。未決着のトランザクションについての情報を確認するときは,引数に「-pending」を指定します。未決着のトランザクションについての情報を確認する場合の実行形式と実行例を次に示します。
cjlisttrn [<サーバ名称>] -pending -bqual |
cjlisttrn MyServer -pending -bqual
cjlisttrnコマンド,および取得できる情報の詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjlisttrn(稼働中のJ2EEサーバのトランザクション情報の表示)」を参照してください。
停止中のJ2EEサーバのトランザクションの情報を確認できます。トランザクションの状態,グローバルトランザクションID,経過時間,ブランチの種類等の情報を確認できます。また,未決着のトランザクションが残っているかどうかも確認できます。
停止中のトランザクションの確認には,cjlisttrnfileコマンドを使用します。実行形式と実行例を次に示します。
cjlisttrnfile [<サーバ名称>] -bqual |
cjlisttrnfile MyServer -bqual
J2EEサーバが停止中の状態で未決着のトランザクションが存在する場合は,必要に応じて次の処理を実行して,トランザクションを決着させてください。
cjlisttrnfileコマンド,および取得できる情報の詳細については,マニュアル「アプリケーションサーバ リファレンス コマンド編」の「cjlisttrnfile(停止中のJ2EEサーバのトランザクション情報の表示)」を参照してください。
All Rights Reserved. Copyright (C) 2012, 2015, Hitachi, Ltd.