2014-11-24 4 views
0

스프링 자바 웹 애플리케이션이 있습니다. 다음 구성으로 연결 풀링에 Hikaricp 2.2.5를 사용하려고합니다.Java 6에서 Hikaricp 2.2.5를 구성 할 수 없습니다.

메이븐 :

<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)를 참조하십시오. –

+0

@ M.Deinum 나는 또한 같은 문제를 보았다. 하지만, 내가 언급 한 maven 구성을 가지고 있다고 생각합니다. 내 maven repo에 HikariCP-java6-2.2.5 jar가 있습니다. – phoenix

+0

응용 프로그램에서 클래스 경로 어딘가에 이전 버전이 없는지 확인하십시오. 어쩌면 당신의 repo에서 하나를 삭제하고 다시 검색해보십시오. –

답변

2

몇 가지. 당신의 스택 트레이스의 예외 : 2.2.5 분기 isJdbc41Compliant()

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

does not line up with 전화. 2.2.5에서 그 code was removed. 둘째, 2.2.5를 사용 중이고 jdbcUrl을 설정하는 경우 dataSourceClassName이 필요하지 않습니다.이 둘은 상호 배타적입니다. 깨끗한 빌드를 시도하고 최후의 수단으로 .m2/repositories 디렉토리로 가서 모든 HikariCP 아티팩트를 찾아서 삭제하고 다시 다운로드하도록하십시오.

업데이트 : 마지막으로 가능하면 최신 MySQL 드라이버를 사용하고 있는지 확인하십시오.