Unwrap to OracleConnection

大憨熊 提交于 2019-12-11 08:43:19

问题


I have this piece of code that used to run properly using JBoss 5.1, Oracle 11, ojdbc6.jar. I was getting the OracleConnection as needed.

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

Not anymore using JBoss 7, Oracle 11, ojdbc6.jar. It says like this:

Connection Not a wrapper class for Oracle Connection

If you have any idea, please help.


回答1:


I use "oracle.jdbc.pool.OracleConnectionPoolDataSource" as datasouce class in glassfish.

Use the class or find jboss class.

Edit and Try:

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;
}



回答2:


Try accessing it as a WrappedConnection, like this

Connection con = ds.getConnection();
WrappedConnection wc = (WrappedConnection) con;
OracleConnection conn =  (OracleConnection) wc.getUnderlyingConnection();


来源:https://stackoverflow.com/questions/8225921/unwrap-to-oracleconnection

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!