You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by David Stevenson <ds...@rochester.rr.com> on 2004/11/27 02:45:10 UTC

Re: Tomcat 4.1: Setting Up Connection Pooling, Adding Resource to server.xml,

I missed the following important information that was in the Tomcat
documentation, that wasn't in the book I was reading. I am currently
getting the following exception in my log file when executing a servlet
that obtains a DataSource using the JNDI InitialContext. I previously
thought it might be a class not defined exception because I didn't
supply the connection pooling .jar files as required by the
instructions.

2004-11-26 20:15:24 org.apache.catalina.INVOKER.ClientListPooledServlet:
ClientListPooledServlet.init:
javax.naming.NameNotFoundException: Name java:comp is not bound in this
Context
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:811)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:194)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at ClientListPooledServlet.init(ClientListPooledServlet.java:25)

>>From ClientListPooledServlet.java. Line 25 is the one with the new
InitialContext () constructor call.

        public void init ( ServletConfig config )
                throws ServletException
        {
                super.init ( config ) ;
                log ( "ClientListPooledServlet.init entered" ) ;
                try
                {
                        // Context initCtx = new InitialContext () ;
                        // Context envCtx = (Context) initCtx.lookup (
"java:comp/env" ) ;
                        // ds = (DataSource) envCtx.lookup (
"jdbc/tomcatbook" ) ;
                        ds = (DataSource) new InitialContext ().lookup (
"java:comp/env/jdbc/tomcatbook" ) ;
                }
                catch ( Exception e )
                {
                        log ( "ClientListPooledServlet.init: " +
e.getMessage () ) ;
                        log ( "ClientListPooledServlet.init: ", e ) ;
                        throw new UnavailableException ( e.getMessage ()
) ;
                }
                log ( "ClientListPooledServlet.init exiting" ) ;
        }



DBCP uses the Jakarta-Commons Database Connection Pool. It relies on
number of Jakarta-Commons componenets:

    * Jakarta-Commons DBCP 1.0
    * Jakarta-Commons Collections 2.0
    * Jakarta-Commons Pool 1.0

These jar files along with your the jar file for your JDBC driver should
be installed in $CATALINA_HOME/common/lib.

I don't know if these versions are close enough, or not.
If not, I can go through the Jakarta Archives looking for
closer versions.

[david@galileo logs]$ ll -rt $CATALINA_HOME/common/lib
...
-rw-r--r--    1 david    stevenson   175426 Nov 26 20:06
commons-collections-2.1.1.jar
-rw-r--r--    1 david    stevenson    42492 Nov 26 20:06
commons-pool-1.2.jar
-rw-r--r--    1 david    stevenson   107631 Nov 26 20:08
commons-dbcp-1.2.1.jar

Based on the Tomcat Documentation, I revamped the server.xml
configuration (I haven't modified this yet to include the
instructions under Preventing dB connection pool leaks in
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/jndi-datasource-examples-howto.html).

  <Context className="org.apache.catalina.core.StandardContext"
cachingAllowed="true"
    charsetMapperClass="org.apache.catalina.util.CharsetMapper"
cookies="true"
    crossContext="false" debug="9" docBase="tomcatbook"
    mapperClass="org.apache.catalina.core.StandardContextMapper"
    path="/tomcatbook" privileged="false" reloadable="true"
swallowOutput="false"
    useNaming="false"
wrapperClass="org.apache.catalina.core.StandardWrapper"
displayName="Mastering Tomcat Development"
 >
    <Logger className="org.apache.catalina.logger.FileLogger"
      prefix="localhost_tomcatbook_log." suffix=".txt"
      timestamp="true"/>
    <Resource name="jdbc/tomcatbook" auth="Container"
type="javax.sql.DataSource" >
      <ResourceParams name="jdbc/tomcatbook">
        <parameter>
          <name>factory</name>
          <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
        </parameter>
        <parameter>
          <name>maxActive</name>
          <value>100</value>
        </parameter>
        <parameter>
          <name>maxIdle</name>
          <value>30</value>
        </parameter>
        <parameter>
          <name>maxWait</name>
          <value>10000</value>
        </parameter>
        <parameter>
           <name>username</name>
          <value>tomcat</value>
        </parameter>
        <parameter>
           <name>password</name>
          <value>RealPasswordOmitted</value>
        </parameter>
        <parameter>
          <name>driverClassName</name>
          <value>com.mysql.jdbc.Driver</value>
        </parameter>
        <parameter>
          <name>url</name>
         
<value>jdbc:mysql://localhost/tomcatbook?autoReconnect=true</value>
        </parameter>
      </ResourceParams>
    </Resource>
  </Context>




$ more $CATALINA_HOME/webapps/tomcatbook/WEB-INF/web.xml
...
        <resource-ref>
                <description>
                        This is a reference to the data source we use
                        to talk to the database configured in the
server.xml file.
                </description>
                <res-ref-name>jdbc/tomcatbook</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
        </resource-ref>
...

=============================================================
Server Information
Tomcat Version		Apache Tomcat/4.1.24-LE-jdk14
JVM Version		1.4.2-b28
JVM Vendor		Sun Microsystems Inc.
OS Name			Linux 	
OS Version		2.4.20-31.9
OS Architecture		i386
MySQL			mysql-standard-4.0.18-pc-linux-i686
			mysql-connector-java-3.0.11-stable
=============================================================


David Stevenson


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