|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.springframework.jca.cci.connection.DelegatingConnectionFactory org.springframework.jca.cci.connection.TransactionAwareConnectionFactoryProxy
public class TransactionAwareConnectionFactoryProxy
Proxy for a target CCI ConnectionFactory
, adding
awareness of Spring-managed transactions. Similar to a transactional JNDI
ConnectionFactory as provided by a J2EE server.
Data access code that should remain unaware of Spring's data access support
can work with this proxy to seamlessly participate in Spring-managed transactions.
Note that the transaction manager, for example the CciLocalTransactionManager
,
still needs to work with underlying ConnectionFactory, not with this proxy.
Make sure that TransactionAwareConnectionFactoryProxy is the outermost
ConnectionFactory of a chain of ConnectionFactory proxies/adapters.
TransactionAwareConnectionFactoryProxy can delegate either directly to the
target connection pool or to some intermediate proxy/adapter like
ConnectionSpecConnectionFactoryAdapter
.
Delegates to ConnectionFactoryUtils
for automatically participating in
thread-bound transactions, for example managed by CciLocalTransactionManager
.
getConnection
calls and close
calls on returned Connections
will behave properly within a transaction, i.e. always operate on the transactional
Connection. If not within a transaction, normal ConnectionFactory behavior applies.
This proxy allows data access code to work with the plain JCA CCI API and still participate in Spring-managed transactions, similar to CCI code in a J2EE/JTA environment. However, if possible, use Spring's ConnectionFactoryUtils, CciTemplate or CCI operation objects to get transaction participation even without a proxy for the target ConnectionFactory, avoiding the need to define such a proxy in the first place.
NOTE: This ConnectionFactory proxy needs to return wrapped Connections in order to handle close calls properly. Therefore, the returned Connections cannot be cast to a native CCI Connection type or to a connection pool implementation type.
ConnectionFactory.getConnection()
,
Connection.close()
,
ConnectionFactoryUtils.doGetConnection(javax.resource.cci.ConnectionFactory)
,
ConnectionFactoryUtils.doReleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
,
Serialized FormConstructor Summary | |
---|---|
TransactionAwareConnectionFactoryProxy()
Create a new TransactionAwareConnectionFactoryProxy. |
|
TransactionAwareConnectionFactoryProxy(ConnectionFactory targetConnectionFactory)
Create a new TransactionAwareConnectionFactoryProxy. |
Method Summary | |
---|---|
Connection |
getConnection()
Delegate to ConnectionFactoryUtils for automatically participating in Spring-managed transactions. |
protected Connection |
getTransactionAwareConnectionProxy(Connection target,
ConnectionFactory cf)
Wrap the given Connection with a proxy that delegates every method call to it but delegates close calls to ConnectionFactoryUtils. |
Methods inherited from class org.springframework.jca.cci.connection.DelegatingConnectionFactory |
---|
afterPropertiesSet, getConnection, getMetaData, getRecordFactory, getReference, getTargetConnectionFactory, setReference, setTargetConnectionFactory |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
public TransactionAwareConnectionFactoryProxy()
public TransactionAwareConnectionFactoryProxy(ConnectionFactory targetConnectionFactory)
targetConnectionFactory
- the target ConnectionFactoryMethod Detail |
---|
public Connection getConnection() throws ResourceException
getConnection
in interface ConnectionFactory
getConnection
in class DelegatingConnectionFactory
ResourceException
ConnectionFactoryUtils.doGetConnection(javax.resource.cci.ConnectionFactory)
protected Connection getTransactionAwareConnectionProxy(Connection target, ConnectionFactory cf)
close
calls to ConnectionFactoryUtils.
target
- the original Connection to wrapcf
- ConnectionFactory that the Connection came from
Connection.close()
,
ConnectionFactoryUtils.doReleaseConnection(javax.resource.cci.Connection, javax.resource.cci.ConnectionFactory)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |