Cosminexus V9 アプリケーションサーバ 機能解説 基本・開発編(コンテナ共通機能)
トランザクションマネージャ(javax.transaction.TransactionManagerまたはjavax.transaction.Transaction)は,トランザクションを管理するためのAPIを提供します。トランザクションマネージャのAPIを使用するフレームワークを使用する場合は,JNDIを使用してトランザクションマネージャを取得できます。トランザクションマネージャを取得するには,「java:comp/TransactionManager」の名前でルックアップします。
アプリケーションサーバがサポートするトランザクションマネージャのAPI,およびSynchronizationを使用する場合の注意について説明します。
アプリケーションサーバがサポートするトランザクションマネージャのAPIを次の表に示します。
表3-16 アプリケーションサーバがサポートするトランザクションマネージャのAPI
| インタフェース | メソッド | 使用可否 |
|---|---|---|
| javax.transaction.TransactionManager | begin | ○ |
| commit | ○ | |
| getStatus | ○ | |
| getTransaction | ○ | |
| resume | ○ | |
| rollback | ○ | |
| setRollbackOnly | ○ | |
| setTransactionTimeout | ○ | |
| suspend | ○ | |
| javax.transaction.Transaction | commit | ○ |
| delistResource | − | |
| enlistResource | − | |
| getStatus | ○ | |
| registerSynchronization | ○ | |
| 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) 2012, 2015, Hitachi, Ltd.