You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by Paul Tomsic <pt...@yahoo.com> on 2002/12/17 21:37:14 UTC

loading jdbc driver fails from DataSource and Context - classLoader problem??

Why does the following work:

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn =
DriverManager.getConnection("jdbc:mysql://10.117.7.18:3306/dow?autoReconnect=true",
"user", "pwd");
PreparedStatement t_stm =
conn.prepareStatement("select name from templates");
ResultSet t_rs = t_stm.executeQuery();
while(t_rs.next()) {
   out.println(t_rs.getString(1));
}			
			
But the following code fails with 
"java.sql.SQLException: Cannot load JDBC driver class
'null'" :
		
System.setProperty("jdbc.drivers",
"com.mysql.jdbc.Driver");
Context t_ctx = new InitialContext();
DataSource t_ds =
(DataSource)t_ctx.lookup("java:comp/env/jdbc/DOW");
Connection t_conn = t_ds.getConnection();
PreparedStatement t_stm =
t_conn.prepareStatement("select name from templates");
ResultSet t_rs = t_stm.executeQuery();
while (t_rs.next()){
  out.println(t_rs.getString(1));
}

I've got this in my server.xml:

-----
    <Resource name="jdbc/dow" auth="Container"
type="javax.sql.DataSource"/>
    <ResourceParams name="jdbc/DOW">
    	<parameter>
    		<name>factory</name>
    	
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
    	</parameter>
    	<parameter>
    		<name>removeAbandoned</name>
    		<value>true</value>
    	</parameter>
    	<parameter>
    		<name>removeAbandonedTimeout</name>
    		<value>60</value>
    	</parameter>
    	<parameter>
    		<name>logAbandoned</name>
    		<value>true</value>
    	</parameter>
    	<parameter>
    		<name>maxActive</name>
    		<value>100</value>
    	</parameter>
    	<parameter>
    		<name>maxIdle</name>
    		<value>30</value>
    	</parameter>
    	<parameter>
    		<name>maxWait</name>
    		<value>10000</value>
    	</parameter>
    	<parameter>
    		<name>username</name>
    		<value>usr</value>
    	</parameter>
    	<parameter>
    		<name>password</name>
    		<value>pwd</value>
    	</parameter>
    	<parameter>
    		<name>driverClassName</name>
			<value>com.mysql.jdbc.Driver</value>
    		
    	</parameter>
    	<parameter>
    		<name>url</name>
    	
<value>jdbc:mysql://10.117.7.18:3306/dow?autoReconnect=true</value>
    	</parameter>
	</ResourceParams> 
-----

and my web.xml:
-----
	<resource-ref>
		<description>DB Connection</description>
		<res-ref-name>jdbc/DOW</res-ref-name>
		<res-type>javax.sql.DataSource</res-type>
		<res-auth>Container</res-auth>
	</resource-ref>

-----

the stack trace for the error:
-----
java.sql.SQLException: Cannot load JDBC driver class
'null'
        at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSource.java:529)
        at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:312)
        at
com.cappsdigital.actions.dsTest.doGet(dsTest.java:50)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at
javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:260)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:527)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2396)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:170)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
        at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
        at
org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:405)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:380)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:508)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:533)
        at java.lang.Thread.run(Thread.java:491)

-----

thoughts?



__________________________________________________
Do you Yahoo!?
Yahoo! Mail Plus - Powerful. Affordable. Sign up now.
http://mailplus.yahoo.com

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>