我有这段代码用于使用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 );
不再使用JBoss 7,Oracle 11,ojdbc6.jar。 它像这样说:
连接 不是Oracle Connection的包装类
如果您有任何想法,请帮助。
答案 0 :(得分:4)
我使用“oracle.jdbc.pool.OracleConnectionPoolDataSource”作为glassfish中的datasouce类。
使用该类或查找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;
}
答案 1 :(得分:0)
尝试将其作为WrappedConnection访问,就像这样
Connection con = ds.getConnection();
WrappedConnection wc = (WrappedConnection) con;
OracleConnection conn = (OracleConnection) wc.getUnderlyingConnection();