EJBクライアントでトランザクションを実装する場合の注意事項を示します。
- サービスの初期化処理で例外が発生した場合は,システムプロパティが正しく設定されていない可能性があります。例外のメッセージに従って対処してください。
- 呼び出されるEnterprise Beanを,コンテナ管理のトランザクション(CMT)でmandatory,required,supportsなどの属性にすれば,EJBクライアントアプリケーションで開始したトランザクションの範囲内で実行されます。
- EJBクライアントアプリケーションが,トランザクション処理中に障害などの理由でダウンした場合は,EJBクライアントアプリケーションを再起動して,グローバルトランザクションのリカバリ処理を行う必要があります。EJBクライアントアプリケーションの再起動後に,EJBClientInitializerクラスのinitializeメソッドを呼び出し,グローバルトランザクションのリカバリ処理が開始するように設計してください。なお,リカバリ処理はバックグラウンドで実行されるため,initializeメソッドはリカバリ処理の完了を待たないでリターンします。
- EJBクライアントアプリケーションでトランザクションを開始している場合は,必ずすべてのトランザクションを決着してから,EJBクライアントアプリケーションのプロセスが停止するように設計してください。トランザクションの決着処理を待たないでEJBクライアントアプリケーションのプロセスを停止すると,プリペア状態のトランザクションが決着されないまま残るおそれがあります。この状態になると,アプリケーションサーバの正常停止やリソースアダプタの停止ができなくなります。また,リソースのロックが解放されない場合があります。
万一,プリペア状態のトランザクションが残ってしまった場合は,EJBクライアントアプリケーションを再起動して,グローバルトランザクションのリカバリ処理を行う必要があります。
- EJBクライアントアプリケーションでは,JTAやOTSが出力する性能解析トレースに,ルートアプリケーション情報やクライアントアプリケーション情報が含まれていません。リクエストをトレースする場合は,スレッドのハッシュコードやXIDの情報を使用してください。なお,トランザクションタイムアウトが発生した時に出力されるメッセージには,ルートアプリケーション情報の代わりに,トランザクションを開始したスレッドのハッシュコードが含まれています。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.