2016-06-13 4 views
1

는 연결 풀

내가 자바 기반의 웹 프로젝트에서 MySQL 데이터베이스 백엔드와 상호 작용 히카리 연결 풀을 사용하고 사용. 라이브러리 버전을 가장 안정적인 버전으로 업그레이드하기로 결정 했으므로 더 이상 데이터베이스에 연결할 수 없습니다.톰캣 8 HikariCP, 최대 절전 모드와 MySQL

  • 자바 8
  • MySQL의 5.7
  • 톰캣 8

종속성

나는 다음과 같은 메이븐 의존성 사용

:

<dependency> 
    <groupId>com.zaxxer</groupId> 
    <artifactId>HikariCP</artifactId> 
    <version>2.4.5</version> 
    <scope>compile</scope> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-hikaricp</artifactId> 
    <version>5.2.0.Final</version> 
</dependency> 

<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-core</artifactId> 
    <version>5.2.0.Final</version> 

</dependency> 
<dependency> 
    <groupId>org.hibernate</groupId> 
    <artifactId>hibernate-envers</artifactId> 
    <version>5.2.0.Final</version> 
</dependency> 

<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>6.0.2</version> 
</dependency> 

를 최대 절전 모드

프로젝트가 잘 컴파일되고 라이브러리가 누락되지 않습니다.

<session-factory> 

    <property name="hibernate.connection.provider_class">com.zaxxer.hikari.hibernate.HikariConnectionProvider</property> 
    <property name="hibernate.hikari.dataSourceClassName">com.mysql.jdbc.jdbc2.optional.MysqlDataSource</property> 
    <property name="hibernate.hikari.dataSource.url">jdbc:mysql://localhost:3306/CitationUserDB?useSSL=false</property> 
    <property name="hibernate.hikari.dataSource.user">dbUser</property> 
    <property name="hibernate.hikari.dataSource.password">vErYsEcReT</property> 
    <property name="hibernate.hikari.dataSource.cachePrepStmts">true</property> 
    <property name="hibernate.hikari.dataSource.prepStmtCacheSize">250</property> 
    <property name="hibernate.hikari.dataSource.prepStmtCacheSqlLimit">2048</property> 
    <property name="hibernate.hikari.dataSource.useServerPrepStmts">true</property> 

    <mapping class="Database.Authentication.User"/> 

</session-factory> 

SessionFactory를

내가 세션 개체를 얻을이 최대 절전 모드 백분율 클래스를 사용 : 이것은 내 최대 절전 모드 설정 파일입니다.

import org.hibernate.SessionFactory; 
import org.hibernate.boot.registry.StandardServiceRegistryBuilder; 
import org.hibernate.cfg.Configuration; 
import org.hibernate.service.ServiceRegistry; 

/** 
* Hibernate session management 
*/ 
public class HibernateUtilUserAuthentication { 
    private static SessionFactory sessionFactory; 

    public static SessionFactory getSessionFactory() { 
     if (sessionFactory == null) { 
      // loads configuration and mappings 
      Configuration configuration = new Configuration().configure("hibernate.userauthentication.cfg.xml"); 
      ServiceRegistry serviceRegistry 
        = new StandardServiceRegistryBuilder() 
        .applySettings(configuration.getProperties()).build(); 

      // builds a session factory from the service registry 
      sessionFactory = configuration.buildSessionFactory(serviceRegistry); 
     } 

     return sessionFactory; 
    } 
} 

오류

첫 번째 데이터베이스 액세스 소스 코드에서 발생하면 다음과 같은 오류가 발생합니다. claspath에는 문제가있는 것으로 보이지만 필요한 모든 라이브러리가 있으며 IntelliJ에서 볼 수 있습니다.

Caused by: org.hibernate.service.spi.ServiceException: Unable to create requested service [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment] 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:244) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:208) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189) 
    at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:51) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.handleTypes(MetadataBuildingProcess.java:352) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.complete(MetadataBuildingProcess.java:111) 
    at org.hibernate.boot.model.process.spi.MetadataBuildingProcess.build(MetadataBuildingProcess.java:83) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:418) 
    at org.hibernate.boot.internal.MetadataBuilderImpl.build(MetadataBuilderImpl.java:87) 
    at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:691) 
    at Database.Authentication.HibernateUtilUserAuthentication.getSessionFactory(HibernateUtilUserAuthentication.java:104) 
    at Database.Authentication.UserAPI.authenticateUser(UserAPI.java:133) 
    at Database.Authentication.UserAuthentication.login(UserAuthentication.java:60) 
    at Bean.LoginBean.login(LoginBean.java:94) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.apache.el.parser.AstValue.invoke(AstValue.java:247) 
    at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267) 
    at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 
    at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 
    ... 32 more 
Caused by: org.hibernate.HibernateException: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
    at com.zaxxer.hikari.hibernate.HikariConnectionProvider.configure(HikariConnectionProvider.java:86) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.configureService(StandardServiceRegistryImpl.java:94) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:217) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:189) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.buildJdbcConnectionAccess(JdbcEnvironmentInitiator.java:145) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:66) 
    at org.hibernate.engine.jdbc.env.internal.JdbcEnvironmentInitiator.initiateService(JdbcEnvironmentInitiator.java:35) 
    at org.hibernate.boot.registry.internal.StandardServiceRegistryImpl.initiateService(StandardServiceRegistryImpl.java:88) 
    at org.hibernate.service.internal.AbstractServiceRegistryImpl.createService(AbstractServiceRegistryImpl.java:234) 
    ... 56 more 
Caused by: java.lang.RuntimeException: java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
    at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:120) 
    at com.zaxxer.hikari.pool.PoolUtilities.initializeDataSource(PoolUtilities.java:110) 
    at com.zaxxer.hikari.pool.BaseHikariPool.<init>(BaseHikariPool.java:157) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:60) 
    at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:48) 
    at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:80) 
    at com.zaxxer.hikari.hibernate.HikariConnectionProvider.configure(HikariConnectionProvider.java:82) 
    ... 64 more 
Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.jdbc2.optional.MysqlDataSource 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305) 
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1139) 
    at com.zaxxer.hikari.util.UtilityElf.createInstance(UtilityElf.java:105) 
    ... 70 more 

그러나 라이브러리가 : 그것은 배포 중에 톰캣에 복사됩니다 enter image description here

:

./webapps/Testapplication/WEB-INF/lib/mysql-connector-java-6.0.2.jar 

나는 JDBC MySQL의 드라이버를 찾을 수없는 이유를 모르겠어요. 어떤 도움이라도 대단히 감사합니다. 미리 감사드립니다.

답변

3

패키지 구조가 mysql-connector-java-6에서 변경되었습니다. MySQL의 커넥터 - 자바 5.x를로 전환

<!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java --> 
<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.39</version> 
</dependency> 
+0

안녕하세요, 난 이미 MySQL의 커넥터의 이전 버전으로 다시 revertig했지만, 나는 아직도에 의한 같은 오류 "가 나타납니다 java.lang.ClassNotFoundException가를 : com.mysql.jdbc.jdbc2.optional.MysqlDataSource " – Stefan

+0

@MightyApe 또한 변경 후 앱을 재배포 했습니까? – Jens

+0

물론, 배포를 위해 tomcat7-maven-plugin을 사용합니다. – Stefan