2014-11-24 58 views
0

我有一個春天的Java Web應用程序。我正在嘗試使用Hikaricp 2.2.5進行以下配置的連接池。無法配置Hikaricp 2.2.5與Java 6

Maven的:

<dependency> 
    <groupId>com.zaxxer</groupId> 
    <artifactId>HikariCP-java6</artifactId> 
    <version>2.2.5</version> 
    <scope>compile</scope> 
</dependency> 

XML:

<bean id="dataSource" class="com.zaxxer.hikari.HikariDataSource" destroy-method="close"> 
    <property name="minimumIdle" value="5"/> 
    <property name="maximumPoolSize" value="200"/> 
    <property name="dataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource"/> 
    <property name="username" value="root"/> 
    <property name="password" value="root"/> 
    <property name="connectionTestQuery" value="SELECT 1"/> 
    <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/app"/> 
    <property name="autoCommit" value="true"/> 
    <property name="connectionTimeout" value="30000"/> 
    <property name="idleTimeout" value="600000"/> 
    <property name="maxLifetime" value="1800000"/> 
    <property name="poolName" value="LoginPool"/> 
</bean> 

我收到以下錯誤NoSuchMethodError

異常堆棧跟蹤:

Caused by: java.lang.NoSuchMethodError: java.sql.Connection.getNetworkTimeout()I 
    at com.zaxxer.hikari.util.PoolUtilities.isJdbc41Compliant(PoolUtilities.java:245) 
    at com.zaxxer.hikari.pool.HikariPool.addConnection(HikariPool.java:412) 
    at com.zaxxer.hikari.pool.HikariPool.fillPool(HikariPool.java:500) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:159) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:110) 
    at com.zaxxer.hikari.HikariDataSource.getConnection(HikariDataSource.java:102) 
    at org.springframework.orm.hibernate3.LocalDataSourceConnectionProvider.getConnection(LocalDataSourceConnectionProvider.java:81) 
    at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:76) 
    at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2006) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1289) 
    at org.hibernate.cfg.AnnotationConfiguration.buildSessionFactory(AnnotationConfiguration.java:859) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.newSessionFactory(LocalSessionFactoryBean.java:860) 
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:779) 
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1479) 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1419) 
    ... 109 more 

如何解決這個問題?

+0

從stacktrace判斷你實際上並沒有使用2.2.5,而是2.2.4。見[這個問題](https://github.com/brettwooldridge/HikariCP/issues/188)。 – 2014-11-24 12:56:27

+0

@ M.Deinum我也看到了同樣的問題。但是,我想我有提到的maven配置。我的Maven回購中有HikariCP-java6-2.2.5 jar。 – phoenix 2014-11-24 13:17:09

+0

確保它也被您的應用程序使用,您的類路徑中某處沒有舊版本。也許嘗試從您的回購中刪除一個並再次檢索它。 – 2014-11-24 13:21:55

回答

2

幾件事情。在您的堆棧跟蹤的異常:

at com.zaxxer.hikari.pool.HikariPool.addConnection(HikariPool.java:412)

does not line up with一個在2.2.5分支isJdbc41Compliant()通話。 2.2.5中的code was removed。其次,如果您使用的是2.2.5,並且您正在設置jdbcUrl,則不需要dataSourceClassName,它們是互斥的。嘗試一個乾淨的版本,作爲最後的手段進入你的.m2/repositories目錄,找到並刪除所有的HikariCP工件,並讓它們重新下載。

更新:最後,請確保您使用的是最新的MySQL驅動程序。