druid和log4jdbc一起使用的时候会出现not support oracle driver 1.0

eyh26e7m  于 4个月前  发布在  Druid
关注(0)|答案(2)|浏览(62)
<dependency>
  <groupId>org.bgee.log4jdbc-log4j2</groupId>
  <artifactId>log4jdbc-log4j2-jdbc4</artifactId>
  <version>1.16</version>
</dependency>

druid 1.1.24

log4jdbc只有驱动类在调用acceptsURL connect getPropertyInfo
这三个方法的时候 才会初始化 真实的驱动。
否则 在获取版本的时候 判断 真实的 驱动为null 然后返回版本号为1

public int getMajorVersion()
	{
		if (lastUnderlyingDriverRequested == null) {
			return 1;
		} 
		return lastUnderlyingDriverRequested.getMajorVersion();
	}

druid在init方法中会进行oracle数据库版本检查。

protected void initCheck() throws SQLException {
        if (JdbcUtils.ORACLE.equals(this.dbType)) {
            isOracle = true;
           //此时未执行log4jdbc驱动类的 acceptsURL 或 connect 或 getPropertyInfo 三个中的任意一个方法
            if (driver.getMajorVersion() < 10) {
                throw new SQLException("not support oracle driver " + driver.getMajorVersion() + "."
                                       + driver.getMinorVersion());
            }

            if (driver.getMajorVersion() == 10 && isUseOracleImplicitCache()) {
                this.getConnectProperties().setProperty("oracle.jdbc.FreeMemoryOnEnterImplicitCache", "true");
            }

            oracleValidationQueryCheck();
        } else if (JdbcUtils.DB2.equals(dbType)) {
            db2ValidationQueryCheck();
        } else if (JdbcUtils.MYSQL.equals(this.dbType)
                || JdbcUtils.MYSQL_DRIVER_6.equals(this.dbType)) {
            isMySql = true;
        }

        if (removeAbandoned) {
            LOG.warn("removeAbandoned is true, not use in production.");
        }
    }

官方不打算兼容一下吗?

2skhul33

2skhul331#

官方对待这种问题的处理方式很奇怪,使用log4jdbc 肯定有自己的原因。

klsxnrf1

klsxnrf12#

能否支持一下,并且考虑本地化扩展驱动和url串的情况

相关问题