背景:
用Druid做Oracle的連接池感覺還不錯,近日新項目要用Hive,故而也想使用Duid來做Hive的連接池。試了試果真可以,也沒報錯。但是,過了一段時間,同樣的代碼卻出問題了。離奇的是我同事,卻沒有任何問題,依舊可以使用。
PS:最新版本已發布1.0.26,該問題直接下載新版本即可。但是,出現新的問題,maven引入包時,jconsole-1.8.jar、tools-1.8.0.jar缺失。

<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.26</version> <exclusions> <exclusion> <groupId>com.alibaba</groupId> <artifactId>jconsole</artifactId> </exclusion> <exclusion> <groupId>com.alibaba</groupId> <artifactId>tools</artifactId> </exclusion> </exclusions> </dependency>
報錯:
getHoldability unsupported
解決方案:
github上有強人問了這個問題,順着問題找到了解決辦法。但是因為還沒發布,故而需要自己編譯打包。
提問鏈接: https://github.com/alibaba/druid/issues/1386
溫少答復鏈接:https://github.com/alibaba/druid/commit/e0837d7c24e2450d0d8628360a7b09c79ed2491e
修改后的代碼如下:
src/main/java/com/alibaba/druid/pool/DruidConnectionHolder.java public DruidConnectionHolder(DruidAbstractDataSource dataSource, Connection conn boolean initUnderlyHoldability = !holdabilityUnsupported; if (JdbcConstants.SYBASE.equals(dataSource.getDbType()) // || JdbcConstants.DB2.equals(dataSource.getDbType()) // || JdbcConstants.HIVE.equals(dataSource.getDbType()) // ) { initUnderlyHoldability = false; }