Cosminexus 機能解説
トランザクションマネジャ(javax.transaction.TransactionManagerまたはjavax.transaction.Transaction)は,トランザクションを管理するためのAPIを提供します。トランザクションマネジャのAPIを使用するフレームワークを使用する場合は,JNDIを使用してトランザクションマネジャを取得できます。トランザクションマネジャを取得するには,「java:comp/TransactionManager」の名前でルックアップします。
CosminexusがサポートするトランザクションマネジャのAPI,およびSynchronizationを使用する場合の注意について説明します。
CosminexusがサポートするトランザクションマネジャのAPIを次の表に示します。
表9-10 CosminexusがサポートするトランザクションマネジャのAPI
インタフェース | メソッド | 使用可否 |
---|---|---|
javax.transaction.TransactionManger | begin | ○ |
commit | ○ | |
getStatus | ○ | |
getTransaction | ○ | |
resume | ○ | |
rollback | ○ | |
setRollbackOnly | ○ | |
setTransactionTimeout | ○ | |
suspend | ○ | |
javax.transaction.Transaction | commit | ○ |
delistResource | − | |
enlistResource | − | |
getStatus | ○ | |
registerSychronization | ○ | |
rollback | ○ | |
setRollbackOnly | ○ |
(凡例) ○:使用できる −:使用できない
注 使用できないメソッドを使用しようとすると,javax.transaction.SystemExceptionがスローされます。
ルックアップで取得したトランザクションマネジャを使用する場合,トランザクション管理に含める処理(データベースのコネクションの取得,使用,解放など)は,トランザクションの開始後から決着前,または開始後から中断前および再開後から決着前の範囲内で実装してください。トランザクションの開始前や決着後,中断中に実装された処理はトランザクション管理に含まれません。
トランザクション(javax.transaction.Transaction)のregisterSynchronizationメソッドで登録するSynchronization(javax.transaction.Synchronization)のbeforeCompletionメソッド,およびafterCompletionメソッドでは,J2EEサーバが提供するサービスを使用できません。使用できないサービスの例を次に示します。
これらのサービスのうちリソースアクセスを行った場合,リソースアクセスがトランザクションマネジャが管理するトランザクションの一部として管理されないで,不整合が発生することがあります。リソースアクセスをする場合は,フレームワークの責任で,フレームワークがリソースに対して直接トランザクションを制御するようにしてください。
上記のような注意事項があるため,ユーザプログラムでSynchronizationを利用することは推奨しません。ユーザプログラムからトランザクション決着のタイミングを利用したい場合には,EJBのjavax.ejb.SessionSynchronizationを使用してください。
All Rights Reserved. Copyright (C) 2006, 2007, Hitachi, Ltd.