tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jan Behrens" <...@diekleinedomain.de>
Subject RE: Tomcat -> MySQL = No suitable driver ERROR
Date Thu, 01 Jul 2004 08:03:42 GMT
David is right, 

you will need to rename {Catalina_Home}/webapps/DBTest/WEB-INF/DBTest.xml to
{Catalina_Home}/webapps/DBTest/WEB-INF/web.xml and hopefully all will be up
and running.

Jan

-----Original Message-----
From: David Smith [mailto:dns4@cornell.edu] 
Sent: Thursday, July 01, 2004 3:56 AM
To: Tomcat Users List
Subject: Re: Tomcat -> MySQL = No suitable driver ERROR


Ok.  I think I'm seeing your trouble.  The stuff you have in 
WEB-INF/DB-Test.xml should be in web.xml instead.  In mine, the 
<resource-ref>...</resource-ref> stuff is at the end of the file just 
before the closing </web-app> tag.  In tomcat versions 3 and 4, the 
order of elements in web.xml was important.  I believe that requirement 
has been lifted in tomcat 5.

--David

Try that and see what happens.

--David

Briggs, Patrick wrote:

>I'm using an example someone else on this list gave me.
>
>So inside of {CATALINA_HOME}/conf/Catalina/localhost/DBTest.xml
>
><?xml version='1.0' encoding='utf-8'?>
><Context debug="5" displayName="DBtest" docBase="DBTest" path="/DBtest" 
>reloadable="true" workDir="work\Catalina\localhost\DBTest">
>
>  <Resource auth="Container" name="jdbc/DBTest" 
>type="javax.sql.DataSource"/>
>  <ResourceParams name="jdbc/DBTest">
>    <parameter>
>      <name>url</name>
>	<value>jdbc:mysql://cir-ops:3306/javatest?autoReconnect=true</value>
>    </parameter>
>    <parameter>
>      <name>maxIdle</name>
>      <value>15</value>
>    </parameter>
>    <parameter>
>      <name>maxActive</name>
>      <value>50</value>
>    </parameter>
>    <parameter>
>      <name>driverClassName</name>
>      <value>com.mysql.jdbc.Driver</value>
>    </parameter>
>    <parameter>
>      <name>maxWait</name>
>      <value>10000</value>
>    </parameter>
>    <parameter>
>      <name>removeAbandoned</name>
>      <value>true</value>
>    </parameter>
>    <parameter>
>      <name>username</name>
>      <value>javauser</value>
>    </parameter>
>    <parameter>
>      <name>factory</name>
>      <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>    </parameter>
>    <parameter>
>      <name>removeAbandonedTimeout</name>
>      <value>60</value>
>    </parameter>
>    <parameter>
>      <name>password</name>
>      <value>javadude</value>
>    </parameter>
>  </ResourceParams>
></Context>
>
>The contents of {Catalina_Home}/webapps/DBTest/WEB-INF/DBTest.xml
>
><?xml version="1.0" encoding="UTF-8"?>
><!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web 
>Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
><web-app xmlns="http://java.sun.com/xml/ns/j2ee"
>    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
>http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
>    version="2.4">
>  <description>MySQL Test App</description>
>  <resource-ref>
>      <description>DB Connection</description>
>      <res-ref-name>jdbc/DBTest</res-ref-name>
>      <res-type>javax.sql.DataSource</res-type>
>      <res-auth>Container</res-auth>
>  </resource-ref>
> 
>  </web-app>
>
>Contents of {Catalina_Home/webapps/DBTest/test.jsp:
>
><%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> <%@ 
>taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
>
><sql:query var="rs" dataSource="jdbc/DBTest">
>select id, foo, bar from testdata
></sql:query>
>
><html>
>  <head>
>    <title>DB Test</title>
>  </head>
>  <body>
>
>  <h2>Results</h2>
>  
><c:forEach var="row" items="${rs.rows}">
>    Foo ${row.foo}<br/>
>    Bar ${row.bar}<br/>
></c:forEach>
>
>  </body>
></html>
>
>The error message displayed on the web-broser for the URL: 
>http://localhost:8080/DBTest/test.jsp
>
>javax.servlet.ServletException: Unable to get connection, DataSource
>invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create 
>JDBC driver of class '' for connect URL 'null', cause: No suitable 
>driver"
>	
>org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageCon
>textI
>mpl.java:825)
>	
>org.apache.jasper.runtime.PageContextImpl.handlePageException(PageConte
>xtImp
>l.java:758)
>	org.apache.jsp.test_jsp._jspService(test_jsp.java:81)
>	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
>	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>	
>org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
>ava:2
>98)
>	
>org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
>	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
>	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>
>
>root cause
>
>javax.servlet.jsp.JspException: Unable to get connection, DataSource
>invalid: "org.apache.commons.dbcp.SQLNestedException: Cannot create 
>JDBC driver of class '' for connect URL 'null', cause: No suitable 
>driver"
>	
>org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.getConnectio
>n(Unk
>nown Source)
>	
>org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(U
>nknow
>n Source)
>	org.apache.jsp.test_jsp._jspx_meth_sql_query_0(test_jsp.java:100)
>	org.apache.jsp.test_jsp._jspService(test_jsp.java:58)
>	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
>	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>	
>org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.j
>ava:2
>98)
>	
>org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
>	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
>	javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>
>
>-----Original Message-----
>From: David Smith [mailto:dns4@cornell.edu]
>Sent: Wednesday, June 30, 2004 1:33 PM
>To: Tomcat Users List
>Subject: Re: Tomcat -> MySQL = No suitable driver ERROR
>
>
>I've set this up I don't know how many times and only ever had problems
>when I've mispelled the JNDI name I gave it somewhere in the 4 places it 
>was specified.  Others have had issue with the order of parameters in 
>the ResourceParams block.  To be on the safe side, follow the order of 
>parameters given in the jndi-datasource-howto.html page you were 
>following.  That's the same page I followed when I did this for the 
>first time.
>
>I take it you've:
>
>1)  defined a <Resource/> and <ResouceParams/> block in your
>{context}.xml file that's stored in the 
>{TOMCAT_HOME}/conf/Catalina/localhost folder.  Both <Resource/> and 
><ResourceParams>...</ResourceParams> sections have the same JNDI name in 
>their name attributes.  I'd recommend all lower case since case is 
>important in java.
>
>2) Placed a <resource-ref>...</resource-ref> in your WEB-INF/web.xml
>file with the <res-ref-name>...</res-ref-name> tag specifying the same 
>JNDI name specified in the {context}.xml file above.  I keep harping on 
>the same JNDI name because this is where I've been messed up before.
>
>3) Did a lookup for java:comp/env/{your JNDI name here} in your java 
>code.
>
>4) Restarted the tomcat service after putting the mysql jar file in
>common/lib so the tomcat classloaders can see it.
>
>Can you post what you do have in {context}.xml and web.xml and just 
>omit
>the username and password for the database or put in bogus ones for the 
>purposes of posting to the list?  An excerpt of your java code where you 
>attempt to access the db would be good as well.
>
>--David
>
>Briggs, Patrick wrote:
>
>  
>
>>Ok, I have it in the common/lib directory, but that didn't make a 
>>difference.  You'd think there would be a lot easier way to setup 
>>stuff
>>    
>>
>like
>  
>
>>this.  Editing XML files is pretty tricky business.
>>
>>-----Original Message-----
>>From: David Smith [mailto:dns4@cornell.edu]
>>Sent: Wednesday, June 30, 2004 12:19 PM
>>To: Tomcat Users List
>>Subject: Re: Tomcat -> MySQL = No suitable driver ERROR
>>
>>
>>Wrong place for mysql jar file.  It should be in
>>{TOMCAT_HOME}/common/lib right along side the DBCP jar file.
>>
>>--David
>>
>>Briggs, Patrick wrote:
>>
>> 
>>
>>    
>>
>>>If the webapps.xml file is supposed to be located in 
>>>Catalina\localhost,
>>>   
>>>
>>>      
>>>
>>the
>> 
>>
>>    
>>
>>>apache's own website documentation JDBC-HOWTO needs to be updated to
>>>   
>>>
>>>      
>>>
>>reflect
>> 
>>
>>    
>>
>>>that new situation.  I'm surprised they haven't updated it because 
>>>I'm
>>>      
>>>
>sure
>  
>
>>>a lot of other people are going to be having the same problems I am.
>>>
>>>I have made all of the changes you have suggest.  the mysql.jar file 
>>>has been deleted everywhere except for {CATALINA_HOME}/shared/lib 
>>>where I have now placed it.
>>>
>>>I have created a file called DBTest.xml over in 
>>>/conf/Catalina/localhost/DBTest.xml
>>>
>>>I used your template for the XML find changing it where it needs 
>>>changes
>>>   
>>>
>>>      
>>>
>>for
>> 
>>
>>    
>>
>>>URL and username/password.
>>>
>>>Still getting the same error message :(
>>>So now what could it be?
>>>
>>>-----Original Message-----
>>>From: Jan Behrens [mailto:jan@diekleinedomain.de]
>>>Sent: Wednesday, June 30, 2004 1:58 AM
>>>To: 'Tomcat Users List'
>>>Subject: RE: Tomcat -> MySQL = No suitable driver ERROR
>>>
>>>
>>>Hi Patrick,
>>>
>>>the problem might be that in Tomcat 5.x the storage of the context 
>>>related configuration changed from server.xml to a sepparate file for 
>>>each webapp. This file should be stored under 
>>>{Catalina_Home}\conf\Catalina\{domain-name}\myWebAppName.xml where 
>>>Catalina_Home points to your Tomcat installation dir and domain_name
>>>   
>>>
>>>      
>>>
>>usually
>> 
>>
>>    
>>
>>>would be localhost in a dev-environment.
>>>
>>>If you have a webapp called myWebApp and want to setup a datastore 
>>>via
>>>      
>>>
>jndi
>  
>
>>>for same to use in Tomcat 5 you could use the following as a basis 
>>>for a myWebApp.xml file stored under
>>>{Catalina_Home}\conf\Catalina\{domain-name}\myWebAppName.xml:
>>>
>>>
>>><?xml version='1.0' encoding='utf-8'?>
>>><Context debug="5" displayName="myWebApp" docBase="myWebApp " 
>>>path="/myWebApp" reloadable="true" 
>>>workDir="work\Catalina\localhost\myWebApp">
>>>
>>><Resource auth="Container" name="jdbc/myWebApp" 
>>>type="javax.sql.DataSource"/> <ResourceParams name="jdbc/myWebApp">
>>>  <parameter>
>>>    <name>url</name>
>>>
>>><value>jdbc:mysql://NAME_OR_IP_OF_MYSQL_SERVER:3306/NAME_OF_DATABASE?
>>>autoR
>>>      
>>>
>e
>  
>
>>>   
>>>
>>>      
>>>
>>c
>> 
>>
>>    
>>
>>>onnect=true</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>maxIdle</name>
>>>    <value>15</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>maxActive</name>
>>>    <value>50</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>driverClassName</name>
>>>    <value>com.mysql.jdbc.Driver</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>maxWait</name>
>>>    <value>10000</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>removeAbandoned</name>
>>>    <value>true</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>username</name>
>>>    <value>USERNAME</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>factory</name>
>>>    <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>removeAbandonedTimeout</name>
>>>    <value>60</value>
>>>  </parameter>
>>>  <parameter>
>>>    <name>password</name>
>>>    <value>PASSWORD</value>
>>>  </parameter>
>>></ResourceParams>
>>></Context>
>>>
>>>The MySQL driver does have to go under {Catalina_Home}\shared\lib! 
>>>Delete any other copies you might have placed in your WEB-INF\lib or 
>>>anywhere
>>>   
>>>
>>>      
>>>
>>else.
>> 
>>
>>    
>>
>>>You should also remove the <context>....</context> you inserted in

>>>server.xml as this should all go in the myWebApp.xml file.
>>>
>>>If you ever deploy your webapp you then only have to copy your
>>>      
>>>
>myWebApp.xml
>  
>
>>>to the Manifest dir in your webapp root dir before creating the 
>>>war-file
>>>   
>>>
>>>      
>>>
>>and
>> 
>>
>>    
>>
>>>Tomcat will automatically create the correct context for your webapp.
>>>
>>>HTH, Jan
>>>
>>>
>>>This e-mail message, including any attachments, is for the sole use 
>>>of the intended recipient(s) and may contain confidential or 
>>>privileged information.  Any unauthorized review, use, disclosure or 
>>>distribution is prohibited.  If you are not the intended recipient, 
>>>please contact the sender by reply e-mail and destroy the message.
>>>
>>>
>>>
>>>   
>>>
>>>      
>>>
>>---------------------------------------------------------------------
>>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>>
>>This e-mail message, including any attachments, is for the sole use of 
>>the intended recipient(s) and may contain confidential or privileged 
>>information.  Any unauthorized review, use, disclosure or distribution 
>>is prohibited.  If you are not the intended recipient, please contact 
>>the sender by reply e-mail and destroy the message.
>>
>> 
>>
>>    
>>
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
>
>This e-mail message, including any attachments, is for the sole use of 
>the intended recipient(s) and may contain confidential or privileged 
>information.  Any unauthorized review, use, disclosure or distribution 
>is prohibited.  If you are not the intended recipient, please contact 
>the sender by reply e-mail and destroy the message.
>
>  
>


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-user-help@jakarta.apache.org


Mime
View raw message