JBossNativeJdbcExtractor (Spring Framework 3.2.1.RELEASE API)
Date: 2013-01-24

org.springframework.jdbc.support.nativejdbc

## Class JBossNativeJdbcExtractor

- java.lang.Object
- - org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter
  - - 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+. As of Spring 3.1.1, it also supports JBoss 7.

  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:
    `WrappedConnection`, `WrappedStatement`, `WrappedResultSet`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `JBossNativeJdbcExtractor()` This constructor retrieves JBoss JDBC wrapper classes, so we can get the underlying vendor connection using reflection.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Connection` | `doGetNativeConnection(Connection con)` Retrieve the Connection via JBoss' `getUnderlyingConnection` method.
    `CallableStatement` | `getNativeCallableStatement(CallableStatement cs)` Retrieve the Connection via JBoss' `getUnderlyingStatement` method.
    `PreparedStatement` | `getNativePreparedStatement(PreparedStatement ps)` Retrieve the Connection via JBoss' `getUnderlyingStatement` method.
    `ResultSet` | `getNativeResultSet(ResultSet rs)` Retrieve the Connection via JBoss' `getUnderlyingResultSet` method.
    `Statement` | `getNativeStatement(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`

- - ### 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 Connection doGetNativeConnection(Connection con)
                                              throws SQLException

      Retrieve the Connection via JBoss' `getUnderlyingConnection` method.
      Overrides:
        `doGetNativeConnection` in class `NativeJdbcExtractorAdapter`
      Throws:
        `SQLException`

    - #### getNativeStatement

          public Statement getNativeStatement(Statement stmt)
                                       throws 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:
        `SQLException` - if thrown by JDBC methods

    - #### getNativePreparedStatement

          public PreparedStatement getNativePreparedStatement(PreparedStatement ps)
                                                       throws 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:
        `SQLException` - if thrown by JDBC methods

    - #### getNativeCallableStatement

          public CallableStatement getNativeCallableStatement(CallableStatement cs)
                                                       throws 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:
        `SQLException` - if thrown by JDBC methods

    - #### getNativeResultSet

          public ResultSet getNativeResultSet(ResultSet rs)
                                       throws 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:
        `SQLException` - if thrown by JDBC methods