I would even get a fresh installation of tomcat and start from scratch with a simple test case.
The attributes of <Host>, e.g. autoDeploy, deployOnStartup, deployXML, unpackWARs can be combined in ways that will not load the JNDI context, definitely when deploying WAR files and possibly under other circumstances. I've had it happen to me myself, and I've seen other comment on it here but sadly for you I didn't document it.
Just saying though, it's worth going back to square one.
Adam
On 03/18/2004 05:42 AM Steve Gums wrote:
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]
-- struts 1.1 + tomcat 5.0.16 + java 1.4.2 Linux 2.4.20 Debian
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
