spring下配置tomcat jdbc pool 报找不到"com.mysql.jdbc.Driver"类
2014-04-16 19:59
495 查看
初始配置
启动时报错,
这篇文章解释了原因 http://stackoverflow.com/questions/4790589/sqlexception-w-tomcat-7-0-jdbc-connection-pool-and-mysql , 大概意思是加载 数据库连接驱动jar包(tomcat?) 和 tomcat jdbc包(spring?) 不是同一个Classloader, 所以需要改为如下配置
其他配置不变
<!--tomcat jdbc pool数据源配置--> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <property name="poolProperties"> <bean class="org.apache.tomcat.jdbc.pool.PoolProperties"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="${database.url}"/> <property name="username" value="${database.username}"/> <property name="password" value="${database.password}"/> <property name="jmxEnabled" value="true"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="false"/> <property name="validationInterval" value="30000"/> <property name="validationQuery" value="SELECT 1"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="initialSize" value="10"/> <property name="maxActive" value="40"/> <property name="minIdle" value="10"/> <property name="maxIdle" value="20"/> <property name="maxWait" value="10000"/> <property name="minEvictableIdleTimeMillis" value="30000"/> <property name="logAbandoned" value="false"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="60"/> <property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"/> </bean> </property> </bean> <!-- 定义实体管理器工厂 --> <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> <property name="persistenceUnitName" value="myJPA" /> <property name="dataSource" ref="dataSource" /> <property name="jpaVendorAdapter"> <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> <property name="showSql" value="true"/> <property name="databasePlatform" value="org.hibernate.dialect.MySQL5Dialect"/> <property name="generateDdl" value="true" /> <property name="database" value="MYSQL" /> </bean> </property> <property name="persistenceProviderClass" value="org.hibernate.jpa.HibernatePersistenceProvider"/> <property name="jpaProperties"> <props> <prop key="hibernate.ejb.naming_strategy">org.hibernate.cfg.ImprovedNamingStrategy</prop> <prop key="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</prop> <prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop> <prop key="hibernate.connection.url">${database.url}</prop> <prop key="hibernate.connection.username">${database.username}</prop> <prop key="hibernate.connection.password">${database.password}</prop> <prop key="hibernate.max_fetch_depth">3</prop> <prop key="hibernate.jdbc.fetch_size">18</prop> <prop key="hibernate.jdbc.batch_size">10</prop> <prop key="hibernate.hbm2ddl.auto">update</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <prop key="javax.persistence.validation.mode">none</prop> </props> </property> </bean>
启动时报错,
... java.sql.SQLException: com.mysql.jdbc.Driver at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:254) ~[tomcat-jdbc.jar:na] at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182) ~[tomcat-jdbc.jar:na] at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:702) ~[tomcat-jdbc.jar:na] at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:634) ~[tomcat-jdbc.jar:na] at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:488) ~[tomcat-jdbc.jar:na] at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:144) ~[tomcat-jdbc.jar:na] ... at javax.management.remote.rmi.RMIConnectionImpl.access$300(Unknown Source) [na:1.8.0] at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(Unknown Source) [na:1.8.0] at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(Unknown Source) [na:1.8.0] at javax.management.remote.rmi.RMIConnectionImpl.invoke(Unknown Source) [na:1.8.0] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:201402101544] at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:201402101544] at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:201402101544] at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0] at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source) [na:1.8.0] at sun.rmi.transport.Transport$1.run(Unknown Source) [na:1.8.0] at sun.rmi.transport.Transport$1.run(Unknown Source) [na:1.8.0] at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0] at sun.rmi.transport.Transport.serviceCall(Unknown Source) [na:1.8.0] at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source) [na:1.8.0] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source) [na:1.8.0] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source) [na:1.8.0] at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [na:1.8.0] at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.8.0] at java.lang.Thread.run(Unknown Source) [na:1.8.0] Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.8.0] at java.net.URLClassLoader$1.run(Unknown Source) ~[na:1.8.0] at java.security.AccessController.doPrivileged(Native Method) [na:1.8.0] at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0] at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0] at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0]
这篇文章解释了原因 http://stackoverflow.com/questions/4790589/sqlexception-w-tomcat-7-0-jdbc-connection-pool-and-mysql , 大概意思是加载 数据库连接驱动jar包(tomcat?) 和 tomcat jdbc包(spring?) 不是同一个Classloader, 所以需要改为如下配置
<!-- 使用spring 加载jdbc驱动 --> <bean id="dataSourceTemplate" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="${database.driver}" /> <property name="url" value="${database.url}" /> <property name="username" value="${database.username}" /> <property name="password" value="${database.password}" /> </bean> <!--tomcat jdbc pool数据源配置--> <bean id="dataSource" class="org.apache.tomcat.jdbc.pool.DataSource" destroy-method="close"> <!-- 通过引用加载数据库信息 --> <property name="dataSource" ref="dataSourceTemplate"/> <property name="jmxEnabled" value="true"/> <property name="testWhileIdle" value="true"/> <property name="testOnBorrow" value="true"/> <property name="testOnReturn" value="false"/> <property name="validationInterval" value="30000"/> <property name="validationQuery" value="SELECT 1"/> <property name="timeBetweenEvictionRunsMillis" value="30000"/> <property name="initialSize" value="10"/> <property name="maxActive" value="40"/> <property name="minIdle" value="10"/> <property name="maxIdle" value="20"/> <property name="maxWait" value="10000"/> <property name="minEvictableIdleTimeMillis" value="30000"/> <property name="logAbandoned" value="false"/> <property name="removeAbandoned" value="true"/> <property name="removeAbandonedTimeout" value="60"/> <property name="jdbcInterceptors" value="org.apache.tomcat.jdbc.pool.interceptor.ConnectionState;org.apache.tomcat.jdbc.pool.interceptor.StatementFinalizer"/> </bean>
其他配置不变
相关文章推荐
- JavaConfig配置spring使用tomcat jdbc pool 后报找不到"com.mysql.jdbc.Driver"类
- invalid: "org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC driver class 'com.mysql.j
- 在idea配置的请况下遇到java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- spring 报错Could not locate driver class with name 'com.mysql.jdbc.Driver'.
- JBoss中配置数据源出现错误:“Failed to register driver for: com.mysql.jdbc.Driver”的解决方法
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包
- Class.forName("com.mysql.jdbc.Driver") ;
- Class.forName("com.mysql.jdbc.Driver")的作用
- JBoss中配置数据源出现错误:“Failed to register driver for: com.mysql.jdbc.Driver”的解决方法
- 启动hive报错:("com.mysql.jdbc.Driver") was not found in the CLASSPATH
- 为什么需要Class.forName("com.mysql.jdbc.Driver")
- 1. Class.forName("com.mysql.jdbc.Driver");//加载数据库驱动
- 连接池配置c3p0、dbcp、tomcat jdbc pool 及常用数据库的driverClass和驱动包
- c3p0、dbcp、tomcat jdbc pool 连接池配置简介及常用数据库的driverClass和驱动包
- 为什么需要Class.forName("com.mysql.jdbc.Driver")
- c3p0数据源配置抛出Could not load driverClass com.mysql.jdbc.Driver的解决方案
- 使用tomcat产生的java.lang.ClassNotFoundException: com.mysql.jdbc.Driver问题
- For input string: "${JDBC.MinPoolSize}" spring加载jdbc.properties配置文件报错
- Exception in thread "main" java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
- Class.forName("com.mysql.jdbc.Driver")