Cosminexus 機能解説
J2EEサーバやリソースマネジャの障害で,プリペア状態またはヒューリスティック完了状態となった2フェーズトランザクションを決着させる機能です。グローバルトランザクションを使用する場合に有効になります。
J2EEサーバを開始すると,インポートされているリソースに対して,無条件にトランザクションの全面回復処理を実行します。また,トランザクション実行中にリソースマネジャがダウンした場合にも,部分回復処理をします。
なお,トランザクションの状態は,インプロセストランザクションサービスを使用している場合,サーバ管理コマンドのcjlisttrnコマンドで表示できます。また,停止中のJ2EEサーバのステータスファイルに残っている,未決着トランザクション情報はcjlisttrnfileコマンドで表示できます。
ライトトランザクションが有効なときには,トランザクションリカバリ機能は使用できません。
- 注意
- J2EEサーバ再起動によるトランザクションリカバリをしない場合,トランザクションの回復は各リソースの回復手順に従い,ユーザ責任で手動回復してください。
- <この項の構成>
- (1) J2EEサーバ終了時の未決着トランザクションの確認とタイムアウトの設定
- (2) 注意事項
(1) J2EEサーバ終了時の未決着トランザクションの確認とタイムアウトの設定
J2EEサーバを正常停止する時,J2EEサーバは未決着のトランザクションがないことを確認してから停止します。未決着のトランザクションがあるときは,それらが完了するまで無限に待ちます。また,そのトランザクションが決着するまでリソースを削除できません。
これに対して,システム開発時など,トランザクションを早急に解決する必要がない場合は,未決着トランザクションの確認時間にタイムアウトを設定できます。タイムアウトが発生した場合は,未決着のトランザクションの確認処理が完了していなくても,J2EEサーバの停止処理がされます。ただし,タイムアウトは,J2EEアプリケーション開発時などに設定してください。J2EEアプリケーション運用時には,トランザクションの信頼性を保証するために,タイムアウトを設定しないことをお勧めします。
タイムアウトの設定は,J2EEサーバのプロパティをカスタマイズして設定します。J2EEサーバの動作設定のカスタマイズについては,マニュアル「Cosminexus システム構築ガイド」を参照してください。
トランザクションリカバリについての注意事項を説明します。
(a) J2EEサーバ起動時にリソースアダプタの開始に失敗した場合の注意
J2EEサーバ起動時にXATransactionを利用するリソースアダプタの開始に失敗した場合,J2EEサーバはトランザクションリカバリを実行しないで,メッセージKDJE48605-Eを出力して強制停止します。この場合は,リソースアダプタの開始処理が失敗する原因を取り除いてから,J2EEサーバを再起動してください。これによって,プリペア状態またはヒューリスティック状態のトランザクションは決着されます。
(b) J2EEサーバを再起動する時の注意
- J2EEサーバが強制終了または異常終了したあと,リソースを削除するとリカバリできなくなります。このため,再起動時にリソースの構成を変更しないでください。
- 強制終了または異常終了前の受信ポートと同じポートで再起動する必要があります。このため,簡易構築定義ファイル内の<configuration>タグ内のパラメタ「ejbserver.distributedtx.recovery.port」の値を変更しないでください。なお,Management Serverを利用しないでシステムを構築する場合は,usrconf.propertiesのejbserver.distributedtx.recovery.portキーを変更しないでください。
(c) トランザクションリカバリを実行するための権限
- リカバリはリソース(XADataSourceなど)に設定したデフォルトユーザで実行します。リソースマネジャによっては,未決着トランザクションの走査に特別な権限や設定が必要になります。また,複数のユーザでサインオンする場合,デフォルトユーザにそのほかのユーザのトランザクションを決着できるリソースマネジャでの適正な権限を付与する必要があります。なお,詳細については,各リソースのマニュアルを参照してください。
- Oracleでリカバリをする場合で,JDBCドライバにCosminexus DABroker Libraryを使用するときは,ユーザに次の権限が必要です。
- SYS.DBA_PENDING_TRANSACTIONSへのSELECT権限
- FORCE_ANY_TRANSACTION権限
Oracleでリカバリをする場合で,JDBCドライバにOracle JDBC Thin Driverを使用するときは,ユーザに次の権限が必要です。
- SYS.DBA_PENDING_TRANSACTIONSへのSELECT権限
- FORCE_ANY_TRANSACTION権限
- SYS.DBMS_SYSTEMをEXECUTEする権限
Oracleを使用する場合の設定については,マニュアル「Cosminexus システム構築ガイド」を参照してください。
(d) 使用するコネクション数
トランザクションリカバリをする場合に使用するコネクション数に注意してください。
J2EEサーバでは,トランザクションサポートレベルがXATransactionの一つのリソースアダプタに対して,次のコネクションを確立します。
- プーリング管理をするコネクション
- リカバリ用のコネクション(一つ)
同一のリソースマネジャで必要となる最大コネクション数は,次の式で示す値になります。リソースマネジャにコネクション数の上限がある場合は,注意してください。
- 同一のリソースマネジャで必要となる最大コネクション数=IR(1) + … + IR(N) + N
- IR(i)
- i番目のリソースアダプタのプール設定値の最大コネクション数。
- 1≦i≦Nです。
- N
- Connector 1.0仕様に準拠したリソースアダプタの場合は,同一のリソースマネジャに接続するリソースアダプタ数。
- Connector 1.5仕様に準拠したリソースアダプタの場合は,同一のリソースマネジャに接続するリソースアダプタ内のコネクション定義数の総数。
- 対象になるのは,開始状態で,かつトランザクションサポートレベルがXATransactionのリソースアダプタです。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.