> >> <Context debug="5"> > <Resource > name="jdbc/CSRapp" > description="DB Connection" > type="javax.sql.DataSource" > scope="shareable" > > driverClassName="com.mysql.jdbc.Driver" > factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" > url="jdbc:mysql://localhost:3306/CSRapp" > username="CSRapp" > password="CSRapp" > auth="Container" > > validationQuery="select 1" > maxActive="10" maxWait="5000" > maxIdle="4" /> > </Context> This configuration is using a tomcat managed database pool. Put your mysql jar file in tomcat's lib folder and you'll see the error go away.
--David Bob Marcum wrote: > Thank you all for your help. > > Caldarale, Charles R wrote: >>> From: Bob Marcum [mailto:bmar...@bcscomputers.com] >>> Subject: Re: Seeking the right solution to >>> java.lang.ClassNotFoundException: com.mysql.jdbc.Driver >>> >>> I did a "find" scan of my system, looking for other copies of >>> both hibernate3.jar and mysql-connector-java-3.1.10-bin.jar to >>> confirm there are no other copies which could be in classpath. >> >> >> Your find might have been a bit too specific, since you mustn't have >> any jars for any version of Hibernate or MySQL in your webapp's >> classloader branch, other than in WEB-INF/lib. >> > I did a find on mysql-connector-java-*.jar. Should have caught > everything. > >> >>> There is a link to the mysql driver jar in hibernate-3.0's >>> own lib directory. >> >> >> What do you mean by "hibernate-3.0's own lib directory"? Is this a >> link somehow inside the Hibernate jar? Are the Hibernate classes >> somewhere else besides the jar in WEB-INF/lib? >> > > No. I am afraid I have confused the issue. There is a lib directory > in the hibernate distribution. One is instructed by the dist readme > to copy your jdbc driver into that lib ... but it is only used when > running the tests to confiem hibernate works okay. I have explored > this a little more since my last post. > >> >>> When I re-run the application, I am right back where I was. I >>> get "java.lang.ClassNotFoundException: com.mysql.jdbc.Driver". >> >> >> What's in the <Context> element for your webapp? Since you're using >> C3P0 pooling, you should not have a <Resource> element inside the >> <Context>, otherwise Tomcat will also attempt to do pooling for the >> driver. >> > I am using a context.xml which has the following in it: > >> <Context debug="5"> > <Resource > name="jdbc/CSRapp" > description="DB Connection" > type="javax.sql.DataSource" > scope="shareable" > > driverClassName="com.mysql.jdbc.Driver" > factory="org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory" > url="jdbc:mysql://localhost:3306/CSRapp" > username="CSRapp" > password="CSRapp" > auth="Container" > > validationQuery="select 1" > maxActive="10" maxWait="5000" > maxIdle="4" /> > </Context> > > This is as recommended by tomcat documentation, as I understand that > documentation. > >>> My webapp cannot see the mysql driver jar, although it clearly sees >>> the hibernate jar. >> >> >> Post the complete stack trace for the CNFE. >> > > Here is the complete stack trace from catalina.log. I have the > debugger set to spit out a lot of data: > > serviceProviderRecord = [Ljava.lang.String;@13c6a22 > 16:38:33,723 INFO Environment:464 - Hibernate 3.0.5 > 16:38:33,734 INFO Environment:477 - hibernate.properties not found > 16:38:33,741 INFO Environment:510 - using CGLIB reflection optimizer > 16:38:33,753 INFO Environment:540 - using JDK 1.4 java.sql.Timestamp > handling > 16:38:34,321 INFO Configuration:1110 - configuring from resource: > /hibernate.cfg.xml > 16:38:34,323 INFO Configuration:1081 - Configuration resource: > /hibernate.cfg.xml > 16:38:34,658 INFO Configuration:444 - Mapping resource: > org/bcs/server/utils/ServiceProvider.hbm.xml > 16:38:35,018 INFO HbmBinder:260 - Mapping class: > org.bcs.server.utils.ServiceProvider -> ServiceProvider > 16:38:35,133 WARN HbmBinder:422 - Could not perform validation checks > for component as the class org.bcs.server.utils.ServiceProvider was > not found > 16:38:35,145 INFO Configuration:1222 - Configured SessionFactory: null > 16:38:35,149 INFO Configuration:875 - processing extends queue > 16:38:35,153 INFO Configuration:879 - processing collection mappings > 16:38:35,155 INFO Configuration:888 - processing association property > references > 16:38:35,156 INFO Configuration:917 - processing foreign key constraints > 16:38:36,141 INFO NamingHelper:26 - JNDI InitialContext properties:{} > 16:38:36,147 INFO DatasourceConnectionProvider:51 - Using datasource: > java:comp/env/jdbc/CSRapp > 16:38:36,166 WARN SettingsFactory:103 - Could not obtain connection > metadata > org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC > driver class 'com.mysql.jdbc.Driver' > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136) > > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) > > at > org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59) > > at > org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:72) > at > org.hibernate.cfg.Configuration.buildSettings(Configuration.java:1463) > at > org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1004) > > at org.bcs.server.db.HibernateUtil.<clinit>(Unknown Source) > at org.bcs.server.db.ModelFacade.findAllLikeThis(Unknown Source) > at > org.bcs.server.SelectionSearchServiceImpl.findAllLikeThis(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > at > com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527) > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:163) > > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:85) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) > > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) > > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:619) > Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130) > > ... 29 more > 16:38:36,247 INFO Dialect:92 - Using dialect: > org.hibernate.dialect.MySQLDialect > 16:38:36,270 INFO TransactionFactoryFactory:31 - Using default > transaction strategy (direct JDBC transactions) > 16:38:36,284 INFO TransactionManagerLookupFactory:33 - No > TransactionManagerLookup configured (in JTA environment, use of > read-write or transactional second-level cache is not recommended) > 16:38:36,293 INFO SettingsFactory:125 - Automatic flush during > beforeCompletion(): disabled > 16:38:36,295 INFO SettingsFactory:129 - Automatic session close at > end of transaction: disabled > 16:38:36,300 INFO SettingsFactory:144 - Scrollable result sets: disabled > 16:38:36,302 INFO SettingsFactory:152 - JDBC3 getGeneratedKeys(): > disabled > 16:38:36,303 INFO SettingsFactory:160 - Connection release mode: null > 16:38:36,309 INFO SettingsFactory:184 - Maximum outer join fetch > depth: 2 > 16:38:36,311 INFO SettingsFactory:187 - Default batch fetch size: 1 > 16:38:36,312 INFO SettingsFactory:191 - Generate SQL with comments: > disabled > 16:38:36,314 INFO SettingsFactory:195 - Order SQL updates by primary > key: disabled > 16:38:36,315 INFO SettingsFactory:334 - Query translator: > org.hibernate.hql.ast.ASTQueryTranslatorFactory > 16:38:36,331 INFO ASTQueryTranslatorFactory:21 - Using > ASTQueryTranslatorFactory > 16:38:36,338 INFO SettingsFactory:203 - Query language substitutions: {} > 16:38:36,342 INFO SettingsFactory:209 - Second-level cache: enabled > 16:38:36,346 INFO SettingsFactory:213 - Query cache: disabled > 16:38:36,354 INFO SettingsFactory:321 - Cache provider: > org.hibernate.cache.EhCacheProvider > 16:38:36,381 INFO SettingsFactory:228 - Optimize cache for minimal > puts: disabled > 16:38:36,394 INFO SettingsFactory:237 - Structured second-level cache > entries: disabled > 16:38:36,430 INFO SettingsFactory:261 - Statistics: disabled > 16:38:36,432 INFO SettingsFactory:265 - Deleted entity synthetic > identifier rollback: disabled > 16:38:36,437 INFO SettingsFactory:279 - Default entity-mode: pojo > 16:38:36,771 INFO SessionFactoryImpl:152 - building session factory > 16:38:36,804 WARN Configurator:126 - No configuration found. > Configuring ehcache from ehcache-failsafe.xml found in the classpath: > jar:file:/usr/local/Apache.org/Tomcat/6.0.18/webapps/CSRapp/WEB-INF/lib/ehcache-1.1.jar!/ehcache-failsafe.xml > > 16:38:37,660 INFO SessionFactoryObjectFactory:82 - Not binding > factory to JNDI, no JNDI name configured > 16:38:37,662 INFO SessionFactoryImpl:379 - Checking 0 named queries > 16:38:37,803 DEBUG ConnectionManager:296 - opening JDBC connection > 16:38:37,820 WARN JDBCExceptionReporter:71 - SQL Error: 0, SQLState: > null > 16:38:37,822 ERROR JDBCExceptionReporter:72 - Cannot load JDBC driver > class 'com.mysql.jdbc.Driver' > org.hibernate.exception.GenericJDBCException: Cannot open connection > at > org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92) > > at > org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80) > > at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) > > at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) > > at > org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:301) > > at > org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:110) > > at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:137) > at > org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:49) > at > org.hibernate.transaction.JDBCTransactionFactory.beginTransaction(JDBCTransactionFactory.java:24) > > at > org.hibernate.jdbc.JDBCContext.beginTransaction(JDBCContext.java:271) > at > org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1079) > at org.bcs.server.db.ModelFacade.findAllLikeThis(Unknown Source) > at > org.bcs.server.SelectionSearchServiceImpl.findAllLikeThis(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > at > com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527) > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:163) > > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:85) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) > > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) > > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:619) > Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load > JDBC driver class 'com.mysql.jdbc.Driver' > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136) > > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) > > at > org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59) > > at > org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:298) > > ... 29 more > Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130) > > ... 32 more > org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load JDBC > driver class 'com.mysql.jdbc.Driver' > 16:39:27,188 DEBUG ConnectionManager:369 - running Session.finalize() > > > > Here is the complete stack trace from localhost ... log: > > Jul 20, 2009 4:38:37 PM org.apache.catalina.core.ApplicationContext log > SEVERE: Exception while dispatching incoming RPC call > com.google.gwt.user.server.rpc.UnexpectedException: Service method > 'public abstract java.lang.String[][] > org.bcs.client.gui.SelectionSearchService.findAllLikeThis(java.lang.String[])' > threw an unexpected exception: > org.hibernate.exception.GenericJDBCException: Cannot open connection > at > com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:360) > at > com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:546) > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:163) > > at > com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:85) > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > at > org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) > > at > org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) > > at > org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) > > at > org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) > > at > org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) > > at > org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) > > at > org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) > > at > org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286) > > at > org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845) > > at > org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) > > at > org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447) > at java.lang.Thread.run(Thread.java:619) > Caused by: org.hibernate.exception.GenericJDBCException: Cannot open > connection > at > org.hibernate.exception.ErrorCodeConverter.handledNonSpecificException(ErrorCodeConverter.java:92) > > at > org.hibernate.exception.ErrorCodeConverter.convert(ErrorCodeConverter.java:80) > > at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:43) > > at > org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:29) > > at > org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:301) > > at > org.hibernate.jdbc.ConnectionManager.getConnection(ConnectionManager.java:110) > > at org.hibernate.jdbc.JDBCContext.connection(JDBCContext.java:137) > at > org.hibernate.transaction.JDBCTransaction.begin(JDBCTransaction.java:49) > at > org.hibernate.transaction.JDBCTransactionFactory.beginTransaction(JDBCTransactionFactory.java:24) > > at > org.hibernate.jdbc.JDBCContext.beginTransaction(JDBCContext.java:271) > at > org.hibernate.impl.SessionImpl.beginTransaction(SessionImpl.java:1079) > at org.bcs.server.db.ModelFacade.findAllLikeThis(Unknown Source) > at > org.bcs.server.SelectionSearchServiceImpl.findAllLikeThis(Unknown Source) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > > at java.lang.reflect.Method.invoke(Method.java:597) > at > com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527) > ... 16 more > Caused by: org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot load > JDBC driver class 'com.mysql.jdbc.Driver' > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1136) > > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.getConnection(BasicDataSource.java:880) > > at > org.hibernate.connection.DatasourceConnectionProvider.getConnection(DatasourceConnectionProvider.java:59) > > at > org.hibernate.jdbc.ConnectionManager.openConnection(ConnectionManager.java:298) > > ... 29 more > Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver > at java.net.URLClassLoader$1.run(URLClassLoader.java:200) > at java.security.AccessController.doPrivileged(Native Method) > at java.net.URLClassLoader.findClass(URLClassLoader.java:188) > at java.lang.ClassLoader.loadClass(ClassLoader.java:306) > at java.lang.ClassLoader.loadClass(ClassLoader.java:251) > at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:169) > at > org.apache.tomcat.dbcp.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:1130) > > ... 32 more > > > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org > For additional commands, e-mail: users-h...@tomcat.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org For additional commands, e-mail: users-h...@tomcat.apache.org