org.hibernate.testing.jta
Class JtaAwareConnectionProviderImpl

java.lang.Object
  extended by org.hibernate.testing.jta.JtaAwareConnectionProviderImpl
All Implemented Interfaces:
Serializable, ConnectionProvider, Service, Configurable, Stoppable, Wrapped

public class JtaAwareConnectionProviderImpl
extends Object
implements ConnectionProvider, Configurable, Stoppable

A DataSource implementation intended for testing Hibernate/JTA interaction. In that limited scope we only ever have one single resource (the database connection) so we do not at all care about full-blown XA semantics. This class behaves accordingly. This class also assumes usage of and access to JBossTS/Arjuna.

See Also:
Serialized Form

Nested Class Summary
static class JtaAwareConnectionProviderImpl.XAResourceWrapper
           
 
Constructor Summary
JtaAwareConnectionProviderImpl()
           
 
Method Summary
 void closeConnection(Connection conn)
          Release a connection from Hibernate use.
 void configure(Map configurationValues)
          Configure the service.
protected  Transaction findCurrentTransaction()
           
 Connection getConnection()
          Obtains a connection for Hibernate use according to the underlying strategy of this provider.
 boolean isUnwrappableAs(Class unwrapType)
          Can this wrapped service be unwrapped as the indicated type?
 void stop()
          Stop phase notification
 boolean supportsAggressiveRelease()
          Does this connection provider support aggressive release of JDBC connections and re-acquisition of those connections (if need be) later?

This is used in conjunction with AvailableSettings.RELEASE_CONNECTIONS to aggressively release JDBC connections.

<T> T
unwrap(Class<T> unwrapType)
          Unproxy the service proxy
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

JtaAwareConnectionProviderImpl

public JtaAwareConnectionProviderImpl()
Method Detail

configure

public void configure(Map configurationValues)
Description copied from interface: Configurable
Configure the service.

Specified by:
configure in interface Configurable
Parameters:
configurationValues - The configuration properties.

stop

public void stop()
Description copied from interface: Stoppable
Stop phase notification

Specified by:
stop in interface Stoppable

getConnection

public Connection getConnection()
                         throws SQLException
Description copied from interface: ConnectionProvider
Obtains a connection for Hibernate use according to the underlying strategy of this provider.

Specified by:
getConnection in interface ConnectionProvider
Returns:
The obtained JDBC connection
Throws:
SQLException - Indicates a problem opening a connection

closeConnection

public void closeConnection(Connection conn)
                     throws SQLException
Description copied from interface: ConnectionProvider
Release a connection from Hibernate use.

Specified by:
closeConnection in interface ConnectionProvider
Parameters:
conn - The JDBC connection to release
Throws:
SQLException - Indicates a problem closing the connection

supportsAggressiveRelease

public boolean supportsAggressiveRelease()
Description copied from interface: ConnectionProvider
Does this connection provider support aggressive release of JDBC connections and re-acquisition of those connections (if need be) later?

This is used in conjunction with AvailableSettings.RELEASE_CONNECTIONS to aggressively release JDBC connections. However, the configured ConnectionProvider must support re-acquisition of the same underlying connection for that semantic to work.

Typically, this is only true in managed environments where a container tracks connections by transaction or thread. Note that JTA semantic depends on the fact that the underlying connection provider does support aggressive release.

Specified by:
supportsAggressiveRelease in interface ConnectionProvider
Returns:
true if aggressive releasing is supported; false otherwise.

findCurrentTransaction

protected Transaction findCurrentTransaction()

isUnwrappableAs

public boolean isUnwrappableAs(Class unwrapType)
Description copied from interface: Wrapped
Can this wrapped service be unwrapped as the indicated type?

Specified by:
isUnwrappableAs in interface Wrapped
Parameters:
unwrapType - The type to check.
Returns:
True/false.

unwrap

public <T> T unwrap(Class<T> unwrapType)
Description copied from interface: Wrapped
Unproxy the service proxy

Specified by:
unwrap in interface Wrapped
Parameters:
unwrapType - The java type as which to unwrap this instance.
Returns:
The unwrapped reference


Copyright © 2001-2012 Red Hat, Inc. All Rights Reserved.