I noticed a couple things. One I want to be corrected if I am wrong but
your docBase should not be root. Second your driver for MySQL isn't the
org.gjt thing anymore. Use com.mysql.jdbc.Driver
I unfortunately have seen this error far too much in the past few days. It
is not getting into the JNDI resources. Your context segment needs repair.
Steve I have included my DBTest.xml from
/usr/local/tomcat/conf/Catalina/localhost/ and it works now.
<Context path="/DBTest" docBase="DBTest"
debug="5" reloadable="true" crossContext="true">
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="localhost_DBTest_log." suffix=".txt"
timestamp="true"/>
<Resource name="jdbc/TestDB"
auth="Container"
type="javax.sql.DataSource"/>
<ResourceParams name="jdbc/TestDB">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<!-- Maximum number of dB connections in pool. Make sure you
configure your mysqld max_connections large enough to handle
all of your db connections. Set to 0 for no limit.
-->
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<!-- Maximum number of idle dB connections to retain in pool.
Set to 0 for no limit.
-->
<parameter>
<name>maxIdle</name>
<value>30</value>
</parameter>
<!-- Maximum time to wait for a dB connection to become available
in ms, in this example 10 seconds. An Exception is thrown if
this timeout is exceeded. Set to -1 to wait indefinitely.
-->
<parameter>
<name>maxWait</name>
<value>10000</value>
</parameter>
<!-- MySQL dB username and password for dB connections -->
<parameter>
<name>username</name>
<value>XXXX</value>
</parameter>
<parameter>
<name>password</name>
<value>XXXX</value>
</parameter>
<!-- Class name for mm.mysql JDBC driver -->
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<!-- The JDBC connection url for connecting to your MySQL dB.
The autoReconnect=true argument to the url makes sure that the
mm.mysql JDBC Driver will automatically reconnect if mysqld closed
the
connection. mysqld by default closes idle connections after 8
hours.
-->
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost/javatest?autoReconnect=true</value>
</parameter>
</ResourceParams>
</Context>
-----Original Message-----
From: Kawthar Bt M Sulaiman [mailto:[EMAIL PROTECTED]
Sent: Wednesday, March 17, 2004 7:32 PM
To: [EMAIL PROTECTED]
Subject: Re: Kumar's JDBC problems with MySQL
Kumar,
I've been trying to follow the JDBC pb thread as well and still can't
get rid of the
problem. Here is what I've done.
Using J Connector 3.0, Tomcat 4.1.30 and mySQL 4.0.18.
I put my "mysql-connector-java-3.0.11-bin" under /common/lib.
1. Start from simple web.xml:
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/mySQLDatabase</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
2. server.xml (located at $CATALINA_HOME\conf\server.xml)
<Context path="/db" docBase ="ROOT" debug="9" reloadable="true">
<Resource name="jdbc/mySQLDatabase" auth="Shareable"
type="javax.sql.DataSource" description="JDBC Connection to
MySQL v4.0.18"/>
<ResourceParams name="jdbc/mySQLDatabase">
<parameter>
<name>factory</name>
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
</parameter>
<parameter>
<name>serverName</name>
<value>localhost</value>
</parameter>
<parameter>
<name>databaseName</name>
<value>ecpa</value>
</parameter>
<parameter>
<name>pathname</name>
<value>conf/tomcat-users.xml</value>
</parameter>
<parameter>
<name>username</name>
<value>xxxx</value>
</parameter>
<parameter>
<name>password</name>
<value>xxxx</value>
</parameter>
<parameter>
<name>removeAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>removeAbandonedTimeout</name>
<value>200</value>
</parameter>
<parameter>
<name>logAbandoned</name>
<value>true</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>100</value>
</parameter>
<parameter>
<name>driverClassName</name>
<value>org.gjt.mm.mysql.Driver</value>
</parameter>
<parameter>
<name>url</name>
<value>jdbc:mysql://localhost:3306/ecpa?autoReconnect=true</value>
</parameter>
</ResourceParams>
<Logger className="org.apache.catalina.logger.FileLogger"
prefix="DBlog." suffix=".txt"
timestamp="true"/>
</Context>
3. In my code:
Context ctx = new InitialContext();
if(ctx == null)
{
throw new Exception("\nNo Context Error");
}
DataSource ds = (DataSource)
ctx.lookup("java:comp/env/jdbc/mySQLDatabase");
if (ds == null)
{
System.out.println("\n DataSource is NULL ");
}
Connection conn = ds.getConnection();
if (conn != null)
{
System.out.println("\nGot Connection ");
Statement stmt = conn.createStatement();
ResultSet rst =
stmt.executeQuery("select username from
users");
if(rst.next())
{
System.out.println("\n username: " +
rst.getString(1));
}
conn.close();
}
4. Error message I got from printStackTrace():
org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver
of class '
' for connect URL 'null', cause:
java.sql.SQLException: No suitable driver
at java.sql.DriverManager.getDriver(DriverManager.java:243)
at
org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou
rce.java:743)
at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource
.java:518)
at
com.maxis.app.ContentProcessor.initializeDatabase(ContentProcessor.ja
va:60)
at com.maxis.morequest.DBTest.init(DBTest.java:31)
at
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.
java:935)
at
org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.jav
a:668)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:210)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextV
alve.java:191)
at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.jav
a:480)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
I believe these are the steps everybody else implementing, but I still
get this
error... Did I miss something?
Thanks,
--Kawthar
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]