java - SQLException w/ Tomcat 7.0 JDBC connection pool and MySql -


i'm trying use new tomcat 7.0 jdbc connection pool , mysql. says here can drop latest tomcat-jdbc.jar tomcat/lib directory in tomcat 6.0 environment, , that's i've done.

i'm using spring initialize , instantiate datasource per examples around web:

<bean id="mydatasource" class="org.apache.tomcat.jdbc.pool.datasource" destroy-method="close"  p:driverclassname="${driver_class}" p:url="${url}" p:username="${username?root}" p:password="${password}" p:initialsize="10" p:initsql="select dts dt_tm_ts read ur" p:minidle="10" p:maxidle="100" p:maxactive="100" p:maxwait="6000" p:jmxenabled="true" p:jdbcinterceptors="org.apache.tomcat.jdbc.pool.interceptor.connectionstate;org.apache.tomcat.jdbc.pool.interceptor.statementfinalizer" p:removeabandoned="true" p:removeabandonedtimeout="60" p:logabandoned="true" p:testonborrow="true" p:testonreturn="false" p:testwhileidle="false" p:useequals="false" p:fairqueue="false" p:timebetweenevictionrunsmillis="30000" p:minevictableidletimemillis="30000" p:validationinterval="1800000" p:validationquery="select dts dt_tm_ts read ur" />    

however when try connect db throws exception:

java.sql.sqlexception: "com.mysql.jdbc.driver"     @ org.apache.tomcat.jdbc.pool.pooledconnection.connectusingdriver(pooledconnection.java:243)     @ org.apache.tomcat.jdbc.pool.pooledconnection.connect(pooledconnection.java:176)     @ org.apache.tomcat.jdbc.pool.connectionpool.createconnection(connectionpool.java:647)     @ org.apache.tomcat.jdbc.pool.connectionpool.borrowconnection(connectionpool.java:589)     @ org.apache.tomcat.jdbc.pool.connectionpool.init(connectionpool.java:452)     @ org.apache.tomcat.jdbc.pool.connectionpool.<init>(connectionpool.java:130)     @ org.apache.tomcat.jdbc.pool.datasourceproxy.createpool(datasourceproxy.java:99)     @ org.apache.tomcat.jdbc.pool.datasourceproxy.getconnection(datasourceproxy.java:110)     @ org.hibernate.ejb.connection.injecteddatasourceconnectionprovider.getconnection(injecteddatasourceconnectionprovider.java:46)     @ org.hibernate.cfg.settingsfactory.buildsettings(settingsfactory.java:111)     @ org.hibernate.cfg.configuration.buildsettings(configuration.java:2101)     @ org.hibernate.cfg.configuration.buildsessionfactory(configuration.java:1325)     @ org.hibernate.cfg.annotationconfiguration.buildsessionfactory(annotationconfiguration.java:867)     @ org.hibernate.ejb.ejb3configuration.buildentitymanagerfactory(ejb3configuration.java:669)     @ org.hibernate.ejb.hibernatepersistence.createcontainerentitymanagerfactory(hibernatepersistence.java:132)     @ org.springframework.orm.jpa.localcontainerentitymanagerfactorybean.createnativeentitymanagerfactory(localcontainerentitymanagerfactorybean.java:225)     @ org.springframework.orm.jpa.abstractentitymanagerfactorybean.afterpropertiesset(abstractentitymanagerfactorybean.java:308)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.invokeinitmethods(abstractautowirecapablebeanfactory.java:1477)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.initializebean(abstractautowirecapablebeanfactory.java:1417)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:519)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor.finddefaultentitymanagerfactory(persistenceannotationbeanpostprocessor.java:529)     @ org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor.findentitymanagerfactory(persistenceannotationbeanpostprocessor.java:495)     @ org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor$persistenceelement.resolveentitymanager(persistenceannotationbeanpostprocessor.java:656)     @ org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor$persistenceelement.getresourcetoinject(persistenceannotationbeanpostprocessor.java:629)     @ org.springframework.beans.factory.annotation.injectionmetadata$injectedelement.inject(injectionmetadata.java:147)     @ org.springframework.beans.factory.annotation.injectionmetadata.inject(injectionmetadata.java:84)     @ org.springframework.orm.jpa.support.persistenceannotationbeanpostprocessor.postprocesspropertyvalues(persistenceannotationbeanpostprocessor.java:338)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.populatebean(abstractautowirecapablebeanfactory.java:1074)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.docreatebean(abstractautowirecapablebeanfactory.java:517)     @ org.springframework.beans.factory.support.abstractautowirecapablebeanfactory.createbean(abstractautowirecapablebeanfactory.java:456)     @ org.springframework.beans.factory.support.abstractbeanfactory$1.getobject(abstractbeanfactory.java:291)     @ org.springframework.beans.factory.support.defaultsingletonbeanregistry.getsingleton(defaultsingletonbeanregistry.java:222)     @ org.springframework.beans.factory.support.abstractbeanfactory.dogetbean(abstractbeanfactory.java:288)     @ org.springframework.beans.factory.support.abstractbeanfactory.getbean(abstractbeanfactory.java:190)     @ org.springframework.beans.factory.support.defaultlistablebeanfactory.preinstantiatesingletons(defaultlistablebeanfactory.java:580)     @ org.springframework.context.support.abstractapplicationcontext.finishbeanfactoryinitialization(abstractapplicationcontext.java:895)     @ org.springframework.context.support.abstractapplicationcontext.refresh(abstractapplicationcontext.java:425)     @ org.springframework.web.context.contextloader.createwebapplicationcontext(contextloader.java:276)     @ org.springframework.web.context.contextloader.initwebapplicationcontext(contextloader.java:197)     @ org.springframework.web.context.contextloaderlistener.contextinitialized(contextloaderlistener.java:47)     @ org.apache.catalina.core.standardcontext.listenerstart(standardcontext.java:4135)     @ org.apache.catalina.core.standardcontext.start(standardcontext.java:4630)     @ org.apache.catalina.core.containerbase.start(containerbase.java:1045)     @ org.apache.catalina.core.standardhost.start(standardhost.java:785)     @ org.apache.catalina.core.containerbase.start(containerbase.java:1045)     @ org.apache.catalina.core.standardengine.start(standardengine.java:445)     @ org.apache.catalina.core.standardservice.start(standardservice.java:519)     @ org.apache.catalina.core.standardserver.start(standardserver.java:710)     @ org.apache.catalina.startup.catalina.start(catalina.java:581)     @ sun.reflect.nativemethodaccessorimpl.invoke0(native method)     @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:39)     @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:25)     @ java.lang.reflect.method.invoke(method.java:597)     @ org.apache.catalina.startup.bootstrap.start(bootstrap.java:289)     @ org.apache.catalina.startup.bootstrap.main(bootstrap.java:414) caused by: java.lang.classnotfoundexception: "com.mysql.jdbc.driver"     @ java.net.urlclassloader$1.run(urlclassloader.java:202)     @ java.security.accesscontroller.doprivileged(native method)     @ java.net.urlclassloader.findclass(urlclassloader.java:190)     @ java.lang.classloader.loadclass(classloader.java:307)     @ java.lang.classloader.loadclass(classloader.java:248)     @ java.lang.class.forname0(native method)     @ java.lang.class.forname(class.java:247)     @ org.apache.tomcat.jdbc.pool.pooledconnection.connectusingdriver(pooledconnection.java:236)     ... 59 more 

i've got mysql-connector-java-5.1.13-bin.jar in both webapp web-inf/lib , tomcat/lib. can connect fine specifying driver details in persistence.xml (no datasource/connection pooling).

there simple workaround spring. instead of having tomcat connection pool create database connection , fail because of class loader shenanigans, let spring create , pass reference connection pool.

<!-- data source template use in connection pool. --> <bean id="datasourcetemplate" class="org.springframework.jdbc.datasource.drivermanagerdatasource">     <property name="driverclassname" value="${jdbc.driver}" />     <property name="url" value="${jdbc.url}" />     <property name="username" value="${jdbc.username}" />     <property name="password" value="${jdbc.password}" /> </bean>  <!-- connection pool data source. --> <bean id="datasource" class="org.apache.tomcat.jdbc.pool.datasource" destroy-method="close">     <!-- refer separately created bean data source template work around quirk of tomcat's class loader. -->     <property name="datasource" ref="datasourcetemplate" />     ... </bean> 

then connection pool use database connection template creating many additional connections needs.

the best part don't have mess tomcat/lib, may not have access to.


Comments

Popular posts from this blog

java - SNMP4J General Variable Binding Error -

sql server - python to mssql encoding problem -

windows - Python Service Installation - "Could not find PythonClass entry" -