com.xenonsoft.bridgetown.aop.transaction.support
Class DataSourceResourceController

java.lang.Object
  extended bycom.xenonsoft.bridgetown.aop.transaction.support.DataSourceResourceController
All Implemented Interfaces:
IResourceController

public class DataSourceResourceController
extends java.lang.Object
implements IResourceController

An implementation of a JDBC resource controller for local transaction support only.

This resource controller does NOT implement global transaction suspension or resumption. If you want to retrieve XA data sources from application server JNDI provider and associate them with a platform transaction manager you should look at JNDIDataSourceResourceController instead.

This resource controller does not implement the suspension or resumption of resources. Because the resource being controlled are local JDBC connection, then this resource controller will make call Connection.commit() or rollback Connection.rollback() or change the auto commit mode Connection.setAutoCommit(boolean) on JDBC connections. Therefore do not use this resource controller with JTA transactions!

Moreover, this resource controller saves the state of the auto commit mode and the transaction isolation level when acquiring the JDBC connection. During the release of the JDBC connection these saved states are restored.

The data source is acquired on the call to openResource(ITransactionContext). This method attempts to open the JDBC connection from the newly derived data source. The acquired JDBC connection, again, is closed on a call to closeResource(ITransactionContext)

It is possible to supply a ready connection to the resource controller setConnection(Connection) before the transaction service manager enlists the resource controller in a transaction ITransactionContext.enlistResource(String, IResourceController). In which case the class just uses it directly. It remembers not to close the connection, because it did no acquire it. The owner has the responsibility.

The connection can be retrieved by calling the standard accessor getResourceConnection() or alternatively by getConnection(). The former method is call is used by an AOP transaction method interceptor to inject the resource into the advised target bean.

Version:
$Id: DataSourceResourceController.java,v 1.4 2005/03/17 02:34:01 peter_pilgrim Exp $
Author:
Peter Pilgrim, 11-Feb-2005 18:07:43

Field Summary
protected  boolean closeOnExit
          Close on exit
protected  java.sql.Connection connection
          JDBC connection
protected  javax.sql.DataSource dataSource
          JDBC data source
protected  TransactionIsolationEnum requestedIsolationLevel
          Requested isolation level
protected  int requestedTransactionTimeout
          Requested transaction timeout
protected  boolean saveAutoCommit
          Saved auto commit mode
protected  int saveIsolationLevel
          Saved isolation level
 
Constructor Summary
DataSourceResourceController()
          Default constructor
DataSourceResourceController(java.sql.Connection connection)
          Standard constructor
DataSourceResourceController(javax.sql.DataSource dataSource)
          Standard constructor
DataSourceResourceController(javax.sql.DataSource dataSource, java.sql.Connection connection)
          Standard constructor
 
Method Summary
 void closeResource(ITransactionContext tx)
          Implements / overrides closeResource
 void commitResource(ITransactionContext tx)
          Implements / overrides commitResource
 java.sql.Connection getConnection()
          Gets the connection
 javax.sql.DataSource getDataSource()
          Gets the JDBC dataSource
 TransactionIsolationEnum getRequestedIsolationLevel()
          Gets the requestedIsolationLevel
 int getRequestedTransactionTimeout()
          Gets the requestedTransactionTimeout
 java.lang.Object getResourceConnection()
          Retrieves the connection resource that binds to the application to the transactional resource.
 boolean isCloseOnExit()
          Gets the closeOnExit
 boolean isResourceOpen(ITransactionContext tx)
          Implements / overrides isResourceOpen
 void openResource(ITransactionContext tx)
          Implements / overrides openResource
 boolean prepareToCommit(ITransactionContext tx)
          Implements / overrides prepareToCommit.
 void resumeResource(ITransactionContext tx)
          Implements / overrides resumeResource
 void rollbackResource(ITransactionContext tx)
          Implements / overrides rollbackResource
 void setCloseOnExit(boolean closeOnExit)
          Sets the closeOnExit
 void setConnection(java.sql.Connection connection)
          Sets the connection
 void setDataSource(javax.sql.DataSource dataSource)
          Sets the JDBC dataSource
 void setRequestedIsolationLevel(TransactionIsolationEnum requestedIsolationLevel)
          Sets the requestedIsolationLevel
 void setRequestedTransactionTimeout(int requestedTransactionTimeout)
          Sets the requestedTransactionTimeout
 void suspendResource(ITransactionContext tx)
          Implements / overrides suspendResource
 java.lang.String toString()
          Returns a human readable string.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

dataSource

protected javax.sql.DataSource dataSource
JDBC data source


connection

protected java.sql.Connection connection
JDBC connection


closeOnExit

protected boolean closeOnExit
Close on exit


saveAutoCommit

protected boolean saveAutoCommit
Saved auto commit mode


saveIsolationLevel

protected int saveIsolationLevel
Saved isolation level


requestedIsolationLevel

protected TransactionIsolationEnum requestedIsolationLevel
Requested isolation level


requestedTransactionTimeout

protected int requestedTransactionTimeout
Requested transaction timeout

Constructor Detail

DataSourceResourceController

public DataSourceResourceController()
Default constructor


DataSourceResourceController

public DataSourceResourceController(javax.sql.DataSource dataSource)
Standard constructor

Parameters:
dataSource - the JDBC data source

DataSourceResourceController

public DataSourceResourceController(java.sql.Connection connection)
Standard constructor

Parameters:
connection - a supplied connection

DataSourceResourceController

public DataSourceResourceController(javax.sql.DataSource dataSource,
                                    java.sql.Connection connection)
Standard constructor

Parameters:
dataSource - the JDBC data source
connection - the supplied connection
Method Detail

toString

public java.lang.String toString()
Returns a human readable string. Implements / overrides toString

Returns:
See Also:
Object.toString()

getDataSource

public javax.sql.DataSource getDataSource()
Gets the JDBC dataSource

Returns:
Returns the dataSource.

setDataSource

public void setDataSource(javax.sql.DataSource dataSource)
Sets the JDBC dataSource

Parameters:
dataSource - the new value for dataSource

isCloseOnExit

public boolean isCloseOnExit()
Gets the closeOnExit

Returns:
Returns the closeOnExit.

setCloseOnExit

public void setCloseOnExit(boolean closeOnExit)
Sets the closeOnExit

Parameters:
closeOnExit - the new value for closeOnExit

getConnection

public java.sql.Connection getConnection()
Gets the connection

Returns:
Returns the connection.

setConnection

public void setConnection(java.sql.Connection connection)
Sets the connection

Parameters:
connection - the new value for connection

getRequestedIsolationLevel

public TransactionIsolationEnum getRequestedIsolationLevel()
Gets the requestedIsolationLevel

Returns:
Returns the requestedIsolationLevel.

setRequestedIsolationLevel

public void setRequestedIsolationLevel(TransactionIsolationEnum requestedIsolationLevel)
Sets the requestedIsolationLevel

Specified by:
setRequestedIsolationLevel in interface IResourceController
Parameters:
requestedIsolationLevel - The requestedIsolationLevel to set.

getRequestedTransactionTimeout

public int getRequestedTransactionTimeout()
Gets the requestedTransactionTimeout

Returns:
Returns the requestedTransactionTimeout.

setRequestedTransactionTimeout

public void setRequestedTransactionTimeout(int requestedTransactionTimeout)
Sets the requestedTransactionTimeout

Specified by:
setRequestedTransactionTimeout in interface IResourceController
Parameters:
requestedTransactionTimeout - The requestedTransactionTimeout to set.

getResourceConnection

public java.lang.Object getResourceConnection()
Retrieves the connection resource that binds to the application to the transactional resource.

For instance, for a JDBC resource controller, this method would return the Connection.

Specified by:
getResourceConnection in interface IResourceController
Returns:
the resource connection object

isResourceOpen

public boolean isResourceOpen(ITransactionContext tx)
Implements / overrides isResourceOpen

Specified by:
isResourceOpen in interface IResourceController
Parameters:
tx -
Returns:
See Also:
IResourceController.isResourceOpen(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

openResource

public void openResource(ITransactionContext tx)
Implements / overrides openResource

Specified by:
openResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.openResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

suspendResource

public void suspendResource(ITransactionContext tx)
Implements / overrides suspendResource

Specified by:
suspendResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.suspendResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

resumeResource

public void resumeResource(ITransactionContext tx)
Implements / overrides resumeResource

Specified by:
resumeResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.resumeResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

prepareToCommit

public boolean prepareToCommit(ITransactionContext tx)
Implements / overrides prepareToCommit.

With local transaction this is alway true!

Specified by:
prepareToCommit in interface IResourceController
Parameters:
tx - the transaction context
Returns:
boolean if the transaction should commit or not
See Also:
IResourceController.prepareToCommit(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

commitResource

public void commitResource(ITransactionContext tx)
Implements / overrides commitResource

Specified by:
commitResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.commitResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

rollbackResource

public void rollbackResource(ITransactionContext tx)
Implements / overrides rollbackResource

Specified by:
rollbackResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.rollbackResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)

closeResource

public void closeResource(ITransactionContext tx)
Implements / overrides closeResource

Specified by:
closeResource in interface IResourceController
Parameters:
tx - the transaction context
See Also:
IResourceController.closeResource(com.xenonsoft.bridgetown.aop.transaction.ITransactionContext)


Copyright © 2005 XeNoNSoFT.com. All Rights Reserved.