public class JotmFactoryBean extends Object implements org.springframework.beans.factory.FactoryBean, org.springframework.beans.factory.DisposableBean
FactoryBean
that retrieves the JTA UserTransaction/TransactionManager
for ObjectWeb's JOTM. Will retrieve
an already active JOTM instance if found (e.g. if running in JOnAS),
else create a new local JOTM instance.
With JOTM, the same object implements both the
UserTransaction
and the
TransactionManager
interface,
as returned by this FactoryBean.
A local JOTM instance is well-suited for working in conjunction with ObjectWeb's XAPool, e.g. with bean definitions like the following:
<bean id="jotm" class="org.springframework.transaction.jta.JotmFactoryBean"/> <bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="userTransaction" ref="jotm"/> </bean> <bean id="innerDataSource" class="org.enhydra.jdbc.standard.StandardXADataSource" destroy-method="shutdown"> <property name="transactionManager" ref="jotm"/> <property name="driverName" value="..."/> <property name="url" value="..."/> <property name="user" value="..."/> <property name="password" value="..."/> </bean> <bean id="dataSource" class="org.enhydra.jdbc.pool.StandardXAPoolDataSource" destroy-method="shutdown"> <property name="dataSource" ref="innerDataSource"/> <property name="user" value="..."/> <property name="password" value="..."/> <property name="maxSize" value="..."/> </bean>Note that Spring's
JtaTransactionManager
will automatically detect
that the passed-in UserTransaction reference also implements the
TransactionManager interface. Hence, it is not necessary to specify a
separate reference for JtaTransactionManager's "transactionManager" property.
Implementation note: This FactoryBean uses JOTM's static access method
to obtain the JOTM Current
object, which
implements both the UserTransaction and the TransactionManager interface,
as mentioned above.
JtaTransactionManager.setUserTransaction(javax.transaction.UserTransaction)
,
JtaTransactionManager.setTransactionManager(javax.transaction.TransactionManager)
,
Current
Constructor and Description |
---|
JotmFactoryBean() |
Modifier and Type | Method and Description |
---|---|
void |
destroy()
Stop the local JOTM instance, if created by this FactoryBean.
|
org.objectweb.jotm.Jotm |
getJotm()
Return the JOTM instance created by this factory bean, if any.
|
Object |
getObject() |
Class |
getObjectType() |
boolean |
isSingleton() |
void |
setDefaultTimeout(int defaultTimeout)
Set the default transaction timeout for the JOTM instance.
|
public JotmFactoryBean() throws NamingException
NamingException
public void setDefaultTimeout(int defaultTimeout)
Should only be called for a local JOTM instance, not when accessing an existing (shared) JOTM instance.
public org.objectweb.jotm.Jotm getJotm()
null
if an already active JOTM instance is used.
Application code should never need to access this.
public Object getObject()
getObject
in interface org.springframework.beans.factory.FactoryBean
public Class getObjectType()
getObjectType
in interface org.springframework.beans.factory.FactoryBean
public boolean isSingleton()
isSingleton
in interface org.springframework.beans.factory.FactoryBean
public void destroy()
destroy
in interface org.springframework.beans.factory.DisposableBean
Copyright © 2005–2014 The Kuali Foundation. All rights reserved.