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]

Reply via email to