Ok, the contents of {TOMCAT_HOME}/conf/Catalina/localhost/DBTest.xml is:

<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>

Contents of {TOMCAT_HOME}/webapps/DBTest/WEB-INF/web.xml is:

<web-app>
  <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>

Is this what you wanted?



-----Original Message-----
From: David Smith [mailto:[EMAIL PROTECTED]
Sent: Thursday, July 01, 2004 10:25 AM
To: Tomcat Users List
Subject: Re: Tomcat -> MySQL = No suitable driver ERROR


Hold on a minute.  I think we have a communication problem here.  I 
wasn't recommending you do that.  Slow down, take a breath and read my 
posts VERY carefully.

We are looking at two different files here.  DBTest.xml as a file 
containing the <Context>...</Context> stuff should be in 
{TOMCAT_HOME}/conf/Catalina/localhost.  Leave that alone.

I was recommending you take the <resource-ref>...</resource-ref> stuff 
you put in {TOMCAT_HOME}/webapps/DBTest/WEB-INF/DBTest.xml and put that 
in {TOMCAT_HOME}/webapps/DBTest/WEB-INF/web.xml.

Both files are needed with their respective parts.  The context 
definition needs to have the <Resource/> and 
<ResourceParams>...</ResourceParams> sections to define a connection 
pool and make it available in tomcat's JNDI name space.  web.xml needs 
the <resource-ref>...</resource-ref> stuff to make the connection pool 
avialable to your application.

--David

Briggs, Patrick wrote:

>Ok, I tried as you suggested, I deleted DBTest.xml out of the
>conf/Catalina/localhost directory and placed it inside my web.xml for the
>webapp itself.  I rebooted my machine, restarted Tomcat, same error.  Still
>nothing.
>
>Here is what my web.xml looks like now:
>
><?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>
>
><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>
>  </web-app>
>
>-----Original Message-----
>From: David Smith [mailto:[EMAIL PROTECTED]
>Sent: Wednesday, June 30, 2004 6:56 PM
>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(PageContex
t
>>    
>>
>I
>  
>
>>mpl.java:825)
>>      
>>org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextI
m
>>    
>>
>p
>  
>
>>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.java
:
>>    
>>
>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.getConnection(U
n
>>    
>>
>k
>  
>
>>nown Source)
>>      
>>org.apache.taglibs.standard.tag.common.sql.QueryTagSupport.doStartTag(Unkn
o
>>    
>>
>w
>  
>
>>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.java
:
>>    
>>
>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:[EMAIL PROTECTED]
>>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:[EMAIL PROTECTED]
>>>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:[EMAIL PROTECTED]
>>>>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?aut
o
>>>>        
>>>>
>R
>  
>
>>>>     
>>>>
>>>>        
>>>>
>>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: [EMAIL PROTECTED]
>>>For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>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: [EMAIL PROTECTED]
>>For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>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: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

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.

Reply via email to