org.springframework.jdbc.support.nativejdbc
Class JBossNativeJdbcExtractor

java.lang.Object
  extended by org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
      extended by org.springframework.jdbc.support.nativejdbc.JBossNativeJdbcExtractor
All Implemented Interfaces:
NativeJdbcExtractor

public class JBossNativeJdbcExtractor
extends NativeJdbcExtractorAdapter

Implementation of the NativeJdbcExtractor interface for JBoss, supporting JBoss Application Server 3.2.4+.

Returns the underlying native Connection, Statement, etc to application code instead of JBoss' wrapper implementations. The returned JDBC classes can then safely be cast, e.g. to oracle.jdbc.OracleConnection.

This NativeJdbcExtractor can be set just to allow working with a JBoss connection pool: If a given object is not a JBoss wrapper, it will be returned as-is.

Since:
03.01.2004
Author:
Juergen Hoeller
See Also:
org.jboss.resource.adapter.jdbc.WrappedConnection#getUnderlyingConnection, org.jboss.resource.adapter.jdbc.WrappedStatement#getUnderlyingStatement, org.jboss.resource.adapter.jdbc.WrappedResultSet#getUnderlyingResultSet

Field Summary
private  java.lang.reflect.Method getUnderlyingConnectionMethod
           
private  java.lang.reflect.Method getUnderlyingResultSetMethod
           
private  java.lang.reflect.Method getUnderlyingStatementMethod
           
private static java.lang.String WRAPPED_CONNECTION_NAME
           
private static java.lang.String WRAPPED_RESULT_SET_NAME
           
private static java.lang.String WRAPPED_STATEMENT_NAME
           
private  java.lang.Class wrappedConnectionClass
           
private  java.lang.Class wrappedResultSetClass
           
private  java.lang.Class wrappedStatementClass
           
 
Constructor Summary
JBossNativeJdbcExtractor()
          This constructor retrieves JBoss JDBC wrapper classes, so we can get the underlying vendor connection using reflection.
 
Method Summary
protected  java.sql.Connection doGetNativeConnection(java.sql.Connection con)
          Retrieve the Connection via JBoss' getUnderlyingConnection method.
 java.sql.CallableStatement getNativeCallableStatement(java.sql.CallableStatement cs)
          Retrieve the Connection via JBoss' getUnderlyingStatement method.
 java.sql.PreparedStatement getNativePreparedStatement(java.sql.PreparedStatement ps)
          Retrieve the Connection via JBoss' getUnderlyingStatement method.
 java.sql.ResultSet getNativeResultSet(java.sql.ResultSet rs)
          Retrieve the Connection via JBoss' getUnderlyingResultSet method.
 java.sql.Statement getNativeStatement(java.sql.Statement stmt)
          Retrieve the Connection via JBoss' getUnderlyingStatement method.
 
Methods inherited from class org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
getNativeConnection, getNativeConnectionFromStatement, isNativeConnectionNecessaryForNativeCallableStatements, isNativeConnectionNecessaryForNativePreparedStatements, isNativeConnectionNecessaryForNativeStatements
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

WRAPPED_CONNECTION_NAME

private static final java.lang.String WRAPPED_CONNECTION_NAME
See Also:
Constant Field Values

WRAPPED_STATEMENT_NAME

private static final java.lang.String WRAPPED_STATEMENT_NAME
See Also:
Constant Field Values

WRAPPED_RESULT_SET_NAME

private static final java.lang.String WRAPPED_RESULT_SET_NAME
See Also:
Constant Field Values

wrappedConnectionClass

private java.lang.Class wrappedConnectionClass

wrappedStatementClass

private java.lang.Class wrappedStatementClass

wrappedResultSetClass

private java.lang.Class wrappedResultSetClass

getUnderlyingConnectionMethod

private java.lang.reflect.Method getUnderlyingConnectionMethod

getUnderlyingStatementMethod

private java.lang.reflect.Method getUnderlyingStatementMethod

getUnderlyingResultSetMethod

private java.lang.reflect.Method getUnderlyingResultSetMethod
Constructor Detail

JBossNativeJdbcExtractor

public JBossNativeJdbcExtractor()
This constructor retrieves JBoss JDBC wrapper classes, so we can get the underlying vendor connection using reflection.

Method Detail

doGetNativeConnection

protected java.sql.Connection doGetNativeConnection(java.sql.Connection con)
                                             throws java.sql.SQLException
Retrieve the Connection via JBoss' getUnderlyingConnection method.

Overrides:
doGetNativeConnection in class NativeJdbcExtractorAdapter
Throws:
java.sql.SQLException

getNativeStatement

public java.sql.Statement getNativeStatement(java.sql.Statement stmt)
                                      throws java.sql.SQLException
Retrieve the Connection via JBoss' getUnderlyingStatement method.

Specified by:
getNativeStatement in interface NativeJdbcExtractor
Overrides:
getNativeStatement in class NativeJdbcExtractorAdapter
Parameters:
stmt - the Statement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC Statement, if possible; else, the original Statement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativePreparedStatement

public java.sql.PreparedStatement getNativePreparedStatement(java.sql.PreparedStatement ps)
                                                      throws java.sql.SQLException
Retrieve the Connection via JBoss' getUnderlyingStatement method.

Specified by:
getNativePreparedStatement in interface NativeJdbcExtractor
Overrides:
getNativePreparedStatement in class NativeJdbcExtractorAdapter
Parameters:
ps - the PreparedStatement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC PreparedStatement, if possible; else, the original PreparedStatement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativeCallableStatement

public java.sql.CallableStatement getNativeCallableStatement(java.sql.CallableStatement cs)
                                                      throws java.sql.SQLException
Retrieve the Connection via JBoss' getUnderlyingStatement method.

Specified by:
getNativeCallableStatement in interface NativeJdbcExtractor
Overrides:
getNativeCallableStatement in class NativeJdbcExtractorAdapter
Parameters:
cs - the CallableStatement handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC CallableStatement, if possible; else, the original CallableStatement
Throws:
java.sql.SQLException - if thrown by JDBC methods

getNativeResultSet

public java.sql.ResultSet getNativeResultSet(java.sql.ResultSet rs)
                                      throws java.sql.SQLException
Retrieve the Connection via JBoss' getUnderlyingResultSet method.

Specified by:
getNativeResultSet in interface NativeJdbcExtractor
Overrides:
getNativeResultSet in class NativeJdbcExtractorAdapter
Parameters:
rs - the ResultSet handle, potentially wrapped by a connection pool
Returns:
the underlying native JDBC ResultSet, if possible; else, the original ResultSet
Throws:
java.sql.SQLException - if thrown by JDBC methods