I am trying to get connection pooling working with Tomcat 4.1.24-LE.
Below is some relevant code.  Tomcat starts up just fine.  I have all my
JAR files I need in the right place.  If I create my own connection
using JDBC it all works just fine.  But using a connection pool is
failing.  The error message is after all the code.
 
Thanks for any help
 
Gregg
 
Server.xml
<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>user</name>
     <value>gdboling</value>
    </parameter>
    <parameter>
     <name>password</name>
     <value>bolinger</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:3306/holocron?autoReconnect=true</value>
    </parameter>
  </ResourceParams>
</Context>
 
web.xml - only the important part
<resource-ref>
      <description>DB Connection</description>
      <res-ref-name>jdbc/TestDB</res-ref-name>
      <res-type>javax.sql.DataSource</res-type>
      <res-auth>Container</res-auth>
</resource-ref>  
 
AddReference.java
try
            {
                Context ctx = new InitialContext();
                if(ctx == null ) 
                    throw new Exception("Boom - No Context");
 
                DataSource ds =
(DataSource)ctx.lookup("java:comp/env/jdbc/TestDB");
                if (ds != null) 
                {
                    Connection connection = ds.getConnection();
              
                    if(connection != null)  
                    {        
                                            try
                                            {
                                                PreparedStatement stmt =
connection.prepareStatement("INSERT INTO reference_table (Type, Title,
Authors, Dates, Periodical, Volume, Issue, Pages, URL) VALUES
(?,?,?,?,?,?,?,?,?)");
                                                stmt.setString(1,
request.getParameter("TypeSelect"));
                                                stmt.setString(2,
request.getParameter("TitleField"));
                                                stmt.setString(3,
authorList);
                                                stmt.setString(4,
request.getParameter("DateField"));
                                                stmt.setString(5,
request.getParameter("PeriodicalField"));
                                                stmt.setString(6,
request.getParameter("VolumeField"));
                                                stmt.setString(7,
request.getParameter("IssueField"));
                                                stmt.setString(8,
request.getParameter("PageField"));
                                                stmt.setString(9,
request.getParameter("URLField"));
                                                stmt.executeUpdate();
                                                stmt.close();
                                                connection.close();
                                                
                                            }
                                            catch(SQLException e)
                                            {
                                                e.printStackTrace();
                                            }
                    }
                }
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
 
And I get this error message
javax.naming.NamingException: Cannot create resource instance
        at
org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceF
actory.java:189)
        at
javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:3
01)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:834)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:181)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:822)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:181)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:822)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:181)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:822)
        at
org.apache.naming.NamingContext.lookup(NamingContext.java:194)
        at
org.apache.naming.SelectorContext.lookup(SelectorContext.java:183)
        at javax.naming.InitialContext.lookup(InitialContext.java:347)
        at AddReference.processRequest(AddReference.java:65)
        at AddReference.doPost(AddReference.java:115)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Appl
icationFilterChain.java:247)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationF
ilterChain.java:193)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperV
alve.java:256)
        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.authenticator.AuthenticatorBase.invoke(Authentica
torBase.java:494)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        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.StandardContext.invoke(StandardContext.java:
2415)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.j
ava:180)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:643)
        at
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatche
rValve.java:171)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.j
ava:172)
        at
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContex
t.invokeNext(StandardPipeline.java:641)
        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.StandardEngineValve.invoke(StandardEngineVal
ve.java:174)
        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.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:22
3)
        at
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java
:594)
        at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.proce
ssConnection(Http11Protocol.java:392)
        at
org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java
:565)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadP
ool.java:619)
        at java.lang.Thread.run(Thread.java:534)

Reply via email to