|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.transaction.support.AbstractPlatformTransactionManager org.springframework.transaction.jta.JtaTransactionManager org.springframework.transaction.jta.WebSphereUowTransactionManager
public class WebSphereUowTransactionManager
WebSphere-specific PlatformTransactionManager implementation that delegates
to a com.ibm.wsspi.uow.UOWManager
instance, obtained from WebSphere's
JNDI environment. This allows Spring to leverage the full power of the WebSphere
transaction coordinator, including transaction suspension, in a manner that is
perfectly compliant with officially supported WebSphere API.
The CallbackPreferringPlatformTransactionManager
interface
implemented by this class indicates that callers should preferably pass in
a TransactionCallback
through the execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback
method, which
will be handled through the callback-based WebSphere UOWManager API instead
of through standard JTA API (UserTransaction / TransactionManager). This avoids
the use of the non-public javax.transaction.TransactionManager
API on WebSphere, staying within supported WebSphere API boundaries.
This transaction manager implementation derives from Spring's standard
JtaTransactionManager
, inheriting the capability to support programmatic
transaction demarcation via getTransaction
/ commit
/
rollback
calls through a JTA UserTransaction handle, for callers
that do not use the TransactionCallback-based execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback
method. However,
transaction suspension is not supported in this getTransaction
style (unless you explicitly specify a JtaTransactionManager.setTransactionManager(TransactionManager)
reference,
despite the official WebSphere recommendations). Use the execute(org.springframework.transaction.TransactionDefinition, org.springframework.transaction.support.TransactionCallback
style
for any code that might require transaction suspension.
This transaction manager is compatible with WebSphere 6.1.0.9 and above. The default JNDI location for the UOWManager is "java:comp/websphere/UOWManager". If the location happens to differ according to your WebSphere documentation, simply specify the actual location through this transaction manager's "uowManagerName" bean property.
setUowManager(UOWManager)
,
setUowManagerName(java.lang.String)
,
com.ibm.wsspi.uow.UOWManager
,
Serialized FormNested Class Summary | |
---|---|
private class |
WebSphereUowTransactionManager.UOWActionAdapter<T>
Adapter that executes the given Spring transaction within the WebSphere UOWAction shape. |
Nested classes/interfaces inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager |
---|
AbstractPlatformTransactionManager.SuspendedResourcesHolder |
Field Summary | |
---|---|
static java.lang.String |
DEFAULT_UOW_MANAGER_NAME
Default JNDI location for the WebSphere UOWManager. |
private UOWManager |
uowManager
|
private java.lang.String |
uowManagerName
|
Fields inherited from class org.springframework.transaction.jta.JtaTransactionManager |
---|
DEFAULT_TRANSACTION_SYNCHRONIZATION_REGISTRY_NAME, DEFAULT_USER_TRANSACTION_NAME, FALLBACK_TRANSACTION_MANAGER_NAMES |
Fields inherited from class org.springframework.transaction.support.AbstractPlatformTransactionManager |
---|
logger, SYNCHRONIZATION_ALWAYS, SYNCHRONIZATION_NEVER, SYNCHRONIZATION_ON_ACTUAL_TRANSACTION |
Constructor Summary | |
---|---|
WebSphereUowTransactionManager()
Create a new WebSphereUowTransactionManager. |
|
WebSphereUowTransactionManager(UOWManager uowManager)
Create a new WebSphereUowTransactionManager for the given UOWManager. |
Method Summary | ||
---|---|---|
void |
afterPropertiesSet()
Initialize the UserTransaction as well as the TransactionManager handle. |
|
protected void |
doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject,
java.util.List<TransactionSynchronization> synchronizations)
Registers the synchronizations as interposed JTA Synchronization on the UOWManager. |
|
|
execute(TransactionDefinition definition,
TransactionCallback<T> callback)
Execute the action specified by the given callback object within a transaction. |
|
protected UOWManager |
lookupDefaultUowManager()
Obtain the WebSphere UOWManager from the default JNDI location "java:comp/websphere/UOWManager". |
|
protected UOWManager |
lookupUowManager(java.lang.String uowManagerName)
Look up the WebSphere UOWManager in JNDI via the configured name. |
|
void |
setUowManager(UOWManager uowManager)
Set the WebSphere UOWManager to use as direct reference. |
|
void |
setUowManagerName(java.lang.String uowManagerName)
Set the JNDI name of the WebSphere UOWManager. |
|
boolean |
supportsResourceAdapterManagedTransactions()
Returns true since WebSphere ResourceAdapters (as exposed in JNDI)
implicitly perform transaction enlistment if the MessageEndpointFactory's
isDeliveryTransacted method returns true . |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Methods inherited from interface org.springframework.transaction.PlatformTransactionManager |
---|
commit, getTransaction, rollback |
Field Detail |
---|
public static final java.lang.String DEFAULT_UOW_MANAGER_NAME
setUowManagerName(java.lang.String)
,
Constant Field Valuesprivate UOWManager uowManager
private java.lang.String uowManagerName
Constructor Detail |
---|
public WebSphereUowTransactionManager()
public WebSphereUowTransactionManager(UOWManager uowManager)
uowManager
- the WebSphere UOWManager to use as direct referenceMethod Detail |
---|
public void setUowManager(UOWManager uowManager)
Typically just used for test setups; in a J2EE environment, the UOWManager will always be fetched from JNDI.
JtaTransactionManager.setUserTransactionName(java.lang.String)
public void setUowManagerName(java.lang.String uowManagerName)
JtaTransactionManager.DEFAULT_USER_TRANSACTION_NAME
,
setUowManager(UOWManager)
public void afterPropertiesSet() throws TransactionSystemException
JtaTransactionManager
afterPropertiesSet
in interface InitializingBean
afterPropertiesSet
in class JtaTransactionManager
TransactionSystemException
JtaTransactionManager.initUserTransactionAndTransactionManager()
protected UOWManager lookupUowManager(java.lang.String uowManagerName) throws TransactionSystemException
uowManagerName
- the JNDI name of the UOWManager
TransactionSystemException
- if the JNDI lookup failedJtaTransactionManager.setJndiTemplate(org.springframework.jndi.JndiTemplate)
,
setUowManagerName(java.lang.String)
protected UOWManager lookupDefaultUowManager() throws TransactionSystemException
TransactionSystemException
- if the JNDI lookup failedJtaTransactionManager.setJndiTemplate(org.springframework.jndi.JndiTemplate)
protected void doRegisterAfterCompletionWithJtaTransaction(JtaTransactionObject txObject, java.util.List<TransactionSynchronization> synchronizations)
doRegisterAfterCompletionWithJtaTransaction
in class JtaTransactionManager
txObject
- the current transaction objectsynchronizations
- List of TransactionSynchronization objectsJtaTransactionManager.getTransactionManager()
,
javax.transaction.Transaction#registerSynchronization
,
javax.transaction.TransactionSynchronizationRegistry#registerInterposedSynchronization
public boolean supportsResourceAdapterManagedTransactions()
true
since WebSphere ResourceAdapters (as exposed in JNDI)
implicitly perform transaction enlistment if the MessageEndpointFactory's
isDeliveryTransacted
method returns true
.
In that case we'll simply skip the JtaTransactionManager.createTransaction(java.lang.String, int)
call.
supportsResourceAdapterManagedTransactions
in interface TransactionFactory
supportsResourceAdapterManagedTransactions
in class JtaTransactionManager
javax.resource.spi.endpoint.MessageEndpointFactory#isDeliveryTransacted
,
AbstractMessageEndpointFactory
,
TransactionFactory.createTransaction(java.lang.String, int)
public <T> T execute(TransactionDefinition definition, TransactionCallback<T> callback) throws TransactionException
CallbackPreferringPlatformTransactionManager
Allows for returning a result object created within the transaction, that is, a domain object or a collection of domain objects. A RuntimeException thrown by the callback is treated as a fatal exception that enforces a rollback. Such an exception gets propagated to the caller of the template.
execute
in interface CallbackPreferringPlatformTransactionManager
definition
- the definition for the transaction to wrap the callback incallback
- the callback object that specifies the transactional action
null
if none
TransactionException
- in case of initialization, rollback, or system errors
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |