インターフェース TransactionSynchronizationRegistry
public interface TransactionSynchronizationRegistry
このインターフェースは、永続マネージャー、リソースアダプター、Jakarta Enterprise Beans および Web アプリケーションコンポーネントなどのシステムレベルのアプリケーションサーバーコンポーネントでの使用を目的としています。これにより、同期オブジェクトを特別な順序のセマンティクスで登録し、リソースオブジェクトを現在のトランザクションに関連付け、現在のトランザクションのトランザクションコンテキストを取得し、現在のトランザクションステータスを取得し、現在のトランザクションにロールバックのマークを付けることができます。このインターフェースは、ステートレスサービスオブジェクトによってアプリケーションサーバーによって実装されます。同じオブジェクトを、スレッドセーフのある任意の数のコンポーネントで使用できます。標準アプリケーションサーバー環境では、このインターフェースを実装するインスタンスは、JNDI を介して標準名で検索できます。標準名は java:comp/TransactionSynchronizationRegistry です。
- 導入:
- JTA 1.1
- バージョン:
- Jakarta Transactions 2.0
メソッドのサマリー
すべてのメソッド インスタンスメソッド 抽象メソッド 修飾子と型 メソッド 説明 ObjectSE
getResource(ObjectSE key)
このメソッドが呼び出されたときに、現在のスレッドにバインドされたトランザクションで管理されているリソースのマップからオブジェクトを取得します。boolean
getRollbackOnly()
このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションの rollbackOnly ステータスを取得します。ObjectSE
getTransactionKey()
このメソッドが呼び出されたときに現在のスレッドにバインドされたトランザクションを表す不透明オブジェクトを返します。int
getTransactionStatus()
このメソッドが呼び出された時点で、現在のスレッドにバインドされているトランザクションのステータスを返します。void
putResource(ObjectSE key, ObjectSE value)
このメソッドが呼び出されたときに、現在のスレッドにバインドされたトランザクションで管理されているリソースのマップ内のオブジェクトを追加または置換します。void
registerInterposedSynchronization(Synchronization sync)
特別な順序セマンティクスで同期インスタンスを登録します。void
setRollbackOnly()
このメソッドが呼び出された時点で、現在のスレッドにバインドされているトランザクションの rollbackOnly ステータスを設定します。
メソッドの詳細
getTransactionKey
ObjectSE getTransactionKey()
このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションを表す不透明なオブジェクトを返します。このオブジェクトは hashCode と equals をオーバーライドして、呼び出し元が hashMap のキーとして使用できるようにします。現在アクティブなトランザクションがない場合は null を返します。このオブジェクトは同じ hashCode を返し、同じアプリケーションサーバーの同じトランザクションコンテキストで実行されている任意のコンポーネントからこのメソッドを呼び出すことによって返される他のすべてのオブジェクトと等しいと比較されます。
toString メソッドは、トランザクションコンテキストを理解するために人間が使用できる可能性のある文字列を返します。toString の結果は、それ以外の場合は定義されていません。具体的には、toString の結果の前方互換性または後方互換性は保証されません。
オブジェクトは必ずしも直列化可能ではなく、仮想マシンが取得された場所以外では定義された動作はありません。
- 戻り値:
- このメソッドが呼び出されたときに現在のスレッドにバインドされたトランザクションを表す不透明なオブジェクト。
- 導入:
- JTA 1.1
putResource
void putResource(ObjectSE key, ObjectSE value)
このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションで管理されているリソースのマップ内のオブジェクトを追加または置き換えます。指定されたキーは、他のユーザーと競合しないように、呼び出し側が定義したクラスである必要があります。キーのクラスは、hashCode メソッドと equals メソッドがマップ内のキーとして使用するのに適していることを保証する必要があります。キーと値は、実装によって検査または使用されません。このメソッドの一般的な規約は、非 null キーと null 値をサポートするマップのMap.put(Object, Object)
SE の規約です。例: キーにすでに値が関連付けられている場合は、値パラメーターで置き換えられます。- パラメーター:
key
- マップエントリのキー。value
- マップエントリの値。- 例外:
IllegalStateExceptionSE
- アクティブなトランザクションがない場合。NullPointerExceptionSE
- パラメーターキーが null の場合。- 導入:
- JTA 1.1
getResource
ObjectSE getResource(ObjectSE key)
このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションで管理されているリソースのマップからオブジェクトを取得します。キーは、同じトランザクションで putResouce を呼び出すことによって以前に提供されている必要があります。キーが現在のリソースマップで見つからない場合は、null が返されます。このメソッドの一般的な規約は、非 null キーと null 値をサポートするマップのMap.get(Object)
SE の規約です。例: パラメーターキーのエントリがない場合、またはキーに関連付けられた値が実際に null の場合、返される値は null です。- パラメーター:
key
- マップエントリのキー。- 戻り値:
- キーに関連付けられた値。
- 例外:
IllegalStateExceptionSE
- アクティブなトランザクションがない場合。NullPointerExceptionSE
- パラメーターキーが null の場合。- 導入:
- JTA 1.1
registerInterposedSynchronization
void registerInterposedSynchronization(Synchronization sync)
特別な順序付けセマンティクスを使用して Synchronization インスタンスを登録します。その beforeCompletion は、すべての SessionSynchronization、beforeCompletion コールバック、および Transaction に直接登録されたコールバックの後で、2 フェーズコミットプロセスが開始する前に呼び出されます。同様に、afterCompletion コールバックは、2 フェーズコミットが完了した後で、SessionSynchronization および Transaction afterCompletion コールバックの前に呼び出されます。beforeCompletion コールバックは、このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションのトランザクションコンテキストで呼び出されます。許可されるメソッドには、コネクターなどのリソースへのアクセスが含まれます。「ユーザーコンポーネント」(タイマーサービスや Bean メソッドなど) へのアクセスは許可されません。これらは、呼び出し元によって管理されているデータの状態を変更したり、registerInterposedSynchronization の別の呼び出し元によってすでにフラッシュされているデータの状態を変更したりする可能性があるためです。一般的なコンテキストは、registerInterposedSynchronization の呼び出し元のコンポーネントコンテキストです。
afterCompletion コールバックは未定義のコンテキストで呼び出されます。上記で定義されている「ユーザーコンポーネント」へのアクセスは許可されません。リソースは閉じることができますが、使用してトランザクション作業を実行することはできません。
このメソッドがアクティブなトランザクションコンテキストなしで呼び出されると、IllegalStateException がスローされます。
2 フェーズコミット処理の開始後にこのメソッドが呼び出されると、IllegalStateException がスローされます。
- パラメーター:
sync
- 同期インスタンス。- 例外:
IllegalStateExceptionSE
- アクティブなトランザクションがない場合。- 導入:
- JTA 1.1
getTransactionStatus
int getTransactionStatus()
このメソッドが呼び出されたときに、現在のスレッドにバインドされているトランザクションのステータスを返します。これは、このメソッドが呼び出されたときに現在のスレッドにバインドされたトランザクションのコンテキストで TransactionManager.getStatus() を実行した結果です。- 戻り値:
- このメソッドが呼び出されたときに現在のスレッドにバインドされているトランザクションのステータス。
- 導入:
- JTA 1.1
setRollbackOnly
void setRollbackOnly()
このメソッドが呼び出された時点で、現在のスレッドにバインドされているトランザクションの rollbackOnly ステータスを設定します。- 例外:
IllegalStateExceptionSE
- アクティブなトランザクションがない場合。- 導入:
- JTA 1.1
getRollbackOnly
boolean getRollbackOnly()
このメソッドが呼び出された時点で現在のスレッドにバインドされているトランザクションの rollbackOnly ステータスを取得します。- 戻り値:
- rollbackOnly ステータス。
- 例外:
IllegalStateExceptionSE
- アクティブなトランザクションがない場合。- 導入:
- JTA 1.1