我面对着tomcat数据源和OracleConnection的怪异行为

情况1:

我已经在tomcat 8中为oracle12c配置了数据源,并将ojdbc8.jar放在tomcat_home/lib文件夹中。
之后,我执行下面的代码,它正在工作

try
{
    if (connection.isWrapperFor(OracleConnection.class))
    {
        oracleConnection = connection.unwrap(OracleConnection.class);  //working fine
    }
}
catch (SQLException ex)
{

}


情况2:

再次配置数据源,并将ojdbc8.jar放置在tomcat_home/lib文件夹以及动态Web项目的WEB-INF/lib中。
在那之后,我执行了上面相同的代码,它没有解开连接,并且我在oracleConnection中为空。

为什么会这样呢?

最佳答案

由于您的tomcat目录已经具有依赖项,因此我们需要知道您的maven(等级?)依赖项是什么样。该依赖项必须设置为作用域:否则,您将有重复的ojdbc驱动程序。

<dependency>
    <groupId>com.oracle.jdbc</groupId>
    <artifactId>ojdbc[number_here]</artifactId>
    <version>[version_here]</version>
    <scope>provided</scope>
</dependency>


Instrumentation: Casting org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper to oracle.jdbc.OracleConnection的可能重复项

10-07 13:22
查看更多