解包到 OracleConnection

mar*_*riu 4 oracle connection jboss7.x

我有这段代码,曾经使用 JBoss 5.1、Oracle 11、ojdbc6.jar 正常运行。我根据需要获取了 OracleConnection。

InitialContext ic = new InitialContext();
DataSource  ds = ( DataSource ) ic.lookup( "java:/" + dataSource );
Connection con = ds.getConnection();       
OracleConnection conn = con.unwrap( OracleConnection.class );
Run Code Online (Sandbox Code Playgroud)

不再使用 JBoss 7、Oracle 11、ojdbc6.jar。它是这样说的:

Connection 不是 Oracle Connection 的包装类

如果您有任何想法,请帮忙。

小智 5

我使用“oracle.jdbc.pool.OracleConnectionPoolDataSource”作为 glassfish 中的数据源类。

使用类或者查找jboss类。

编辑并尝试:

public OracleConnection getOracleConnection(Connection connection) throws SQLException {
    OracleConnection oconn = null;
    try {
        if (connection.isWrapperFor(oracle.jdbc.OracleConnection.class)) {
            oconn = (OracleConnection) connection.unwrap(oracle.jdbc.OracleConnection.class)._getPC();
        }
    } catch (SQLException e) {
        throw e;
    }
    return oconn;
}
Run Code Online (Sandbox Code Playgroud)

  • 这确实有效,但请注意,您应该始终关闭包装器 Connection 而不是未包装的 OracleConnection,因为这不会将连接释放回池。此外,您不应尝试关闭 OracleConnection,因为这将导致“连接已关闭”异常。 (5认同)