tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Phillip Qin <Phillip....@shareowner.com>
Subject RE: connection pooling
Date Thu, 07 Oct 2004 22:22:45 GMT
No, you don't need that many params. I think your problem might be the
driver. Where did you drop off your informix jdbc jar?



-----Original Message-----
From: Eric Wulff [mailto:ewulff@gmail.com] 
Sent: October 7, 2004 5:56 PM
To: Tomcat Users List
Subject: Re: connection pooling


Yes, I have added <Resource name=... >.  Now different errors are reported
via stack trace as I posted in response to Atishay's suggestion that I add
this.  I'll try adding your suggestions and see what happens.  Also, you
suggest adding many parameters.  Are they necessary for simply making a
connection?  If so, the tutorial I'm following, 'Tomcat Kick Start' left all
your suggestions out. 
Including the <Resource> tag, but that seems critical for connection.

Eric


On Thu, 7 Oct 2004 17:14:27 -0400, Phillip Qin <phillip.qin@shareowner.com>
wrote:
> 1. web.xml: OK
> 
> 2. context.xml on <context> of server.xml:
> 
>         <Resource name="jdbc/test_connect" auth="Container" 
> type="javax.sql.DataSource"/> <= have you added this?
>         <ResourceParams name="jdbc/test_connect">
>         <parameter>
>                 <name>driverClassName</name>
>                 <value>your.jdbc.driver</value>
>         </parameter>
>         <parameter>
>                 <name>url</name>
>                 <value>your.jdbc.url</value>
>         </parameter>
>         <parameter>
>                 <name>username</name>
>                 <value>youruser</value>
>         </parameter>
>         <parameter>
>                 <name>password</name>
>                 <value>yourpass</value>
>         </parameter>
>         <parameter>
>                 <name>maxActive</name>
>                 <value>20</value>
>         </parameter>
>         <parameter>
>                 <name>maxIdle</name>
>                 <value>10</value>
>         </parameter>
>         <parameter>
>                 <name>minIdle</name>
>                 <value>10</value>
>         </parameter>
>         <parameter>
>                 <name>maxWait</name>
>                 <value>15000</value>
>         </parameter>
>         <parameter>
>                 <name>removeAbandoned</name>
>                 <value>true</value>
>         </parameter>
>         <parameter>
>                 <name>validationQuery</name>
>                 <value>your_query</value>
>         </parameter>
>         <parameter>
>                 <name>testOnBorrow</name>
>                 <value>true</value>
>         </parameter>
>         <parameter>
>                 <name>testOnReturn</name>
>                 <value>true</value>
>         </parameter>
>         <parameter>
>                 <name>minEvictableIdleTimeMillis</name>
>                 <value>-1</value>
>         </parameter>
>         <!-- sleeps 5 minutes -->
>         <parameter>
>                 <name>timeBetweenEvictionRunsMillis</name>
>                 <value>300000</value>
>         </parameter>
>         <parameter>
>                 <name>numTestsPerEvictionRun</name>
>                 <value>1</value>
>         </parameter>
>         <parameter>
>                 <name>testWhileIdle</name>
>                 <value>true</value>
>         </parameter>
> 
>         </ResourceParams>
> 
> 3. code
> 
>                 Context initContext = new InitialContext();
>                 Context jdbcContext = (Context) 
> initContext.lookup("java:comp/env");
>                 DataSource dataSource = (DataSource) 
> jdbcContext.lookup("jdbc/test_connect");
>                 ...
> 
> 
> -----Original Message-----
> From: Eric Wulff [mailto:ewulff@gmail.com]
> Sent: October 7, 2004 4:34 PM
> To: Tomcat Users List
> Subject: Re: connection pooling
> 
> Hi Phillip,
> 
> On Thu, 7 Oct 2004 09:29:09 -0400, you wrote:
> > Detail, detail, detail.
> >
> > 1. your context.xml
> > 2. your web.xml
> > 3. how do you obtain connection from pool, java code pls. 4. can you 
> > connect using pool 5. commons-pool version
> >
> > Etc. etc.
> >
> > You need to provide details otherwise we can't help.
> 
> This was all included in my original post.  Ok, actually my 2nd post 
> because I accidentally hit send prior to completing my post via the 
> scroll pad on my laptop.  Still, thx for checking on this and the info 
> you looking for is copied again here...
> 
> System:
> Tomcat 5 on Fedora Core 2 connecting to a db on an Informix Dynamic 
> Server 9.4 on Windows Server
> 
> -I am able to connect to my db via typical JDBC 
> DriverManager.getConnection().  This leads me to believe that my 
> informix jdbc driver is in the correct place... 
> CATALINA_HOME/common/lib -I have a Context set up in my server.xml per 
> examples in a text tutorial I'm referencing
> 
> Below listed...
> -errors
> -web.xml
> -server.xml <Context> (minus connection actual values)
> -.java
> 
> exception/errors:
> -Exception: org.apache.commons.dbcp.SQLNestedException: Cannot create 
> JDBC driver of class '' for connect URL 'null' SQL state: null Error 
> code: 0
> 
> -stack trace reveals this, but I can't see why since I have the driver 
> in the correct directory...
> java.sql.SQLException: No suitable driver at
> java.sql.DriverManager.getDriver(DriverManager.java:243) at 
> org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSour
> ce.jav
> a:773)
> 
> web.xml:
> <?xml version="1.0" encoding="ISO-8859-1"?>
> <!DOCTYPE web-app
>    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
>    "http://java.sun.com/dtd/web-app_2_3.dtd">
> <web-app>
>        <servlet>
>                <servlet-name>Test Connection Pooling</servlet-name>
>                <servlet-class>TestConnectionPooling</servlet-class>
>        </servlet>
> 
>        <servlet-mapping>
>                <servlet-name>Test Connection Pooling</servlet-name>
>                <url-pattern>/testConnectionPooling</url-pattern>
>        </servlet-mapping>
> 
>        <resource-ref>
>          <res-ref-name>jdbc/test_connect</res-ref-name>
>          <res-type>javax.sql.DataSource</res-type>
>          <res-auth>Container</res-auth>
>        </resource-ref>
> </web-app>
> 
> server.xml <Context>:
>  <Context path="/testConnectionPooling" 
> docBase="testConnectionPooling" debug="0" reloadable="true">
>    <ResourceParams name="jdbc/test_connect">
>      <parameter>
>        <name>username</name>
>        <value>informix</value>
>      </parameter>
>      <parameter>
>        <name>password</name>
>        <value>informix</value>
>      </parameter>
>      <parameter>
>        <name>driverClassName</name>
>        <value>com.informix.jdbc.IfxDriver</value>
>      </parameter>
>      <parameter>
>        <name>url</name> 
> <value>jdbc:informix-sqli://url:port/dbName:INFORMIXSERVER=serverName<
> /value
> >
>      </parameter>
>    </ResourceParams>
>  </Context>
> 
> .java:
> import java.io.*;
> import java.sql.*;
> // -Must import javax.naming use JNDI which is required to implement data
> //   resource references and hence connection pooling.
> import javax.naming.*;
> import javax.sql.*;
> import javax.servlet.*;
> import javax.servlet.http.*;
> import java.util.*;
> 
> public class TestConnectionPooling extends HttpServlet {
>        private DataSource dataSource;
> 
>        public void init(ServletConfig config) throws ServletException {
>                try {
>                        Context init = new InitialContext();
>                        // don't know what the 'java:comp/env' refers to
>                        Context ctx = (Context)
init.lookup("java:comp/env");
>                        // I know "jdbc/conversion must match the 
> web.xml res-ref-name of the web.xml but don't know what the path really
refers to
>                        dataSource = (DataSource) 
> ctx.lookup("jdbc/test_connect");
>                } catch (NamingException ex) {
>                        throw new ServletException("Cannot retrieve 
> java:comp/env/jdbc/test_connect",ex);
>                }
>        }
> 
>        public void doGet(HttpServletRequest request, 
> HttpServletResponse
> response)
>        throws ServletException, IOException {
>                response.setContentType("text/html");
>                PrintWriter out = response.getWriter();
>                Connection connection = null;
>                out.println ("<HTML><HEAD><TITLE>Test Connection
> Pooling</TITLE></HEAD><BODY>");
>                out.println("<H1>Customer Name Query</H1>");
> 
>                try {
>                        synchronized(dataSource) {
>                            connection = dataSource.getConnection();
>                        }
>                        out.println("<br>");
>                        out.println("<strong>Loaded informix driver 
> successfully via server.xml.</strong>" +
>                                                "Now attempting db 
> connection.");
>                        out.println("<br>");
>                        PreparedStatement pstmt = 
> connection.prepareStatement("SELECT blah FROM blah blah");
>                        ResultSet results = pstmt.executeQuery();
>                        if (!results.next()) {
>                                throw new SQLException("No data 
> returned for some reason");
>                        }
>                        out.println("<br>");
>                        while(results.next()) {
>                                out.println("<tr><td>" +
> results.getString("blah") + "</td></tr>");
>                        }
>        } catch (Exception ex) {
>                        out.println("<br>");
>                        out.println("Exception: " + ex);
>                        if(ex instanceof SQLException) {
>                                SQLException sqlex = (SQLException) ex;
>                                out.println("<br>");
>                                out.println("SQL state: 
> "+sqlex.getSQLState()+"<BR>");
>                                out.println("<br>");
>                                out.println("Error code: 
> "+sqlex.getErrorCode()+"<BR>");
>                                out.println("<br><br>");
>                                sqlex.printStackTrace(out);
>                                out.println("<br><br>");
>                        }
>        }
>        finally {
>            try { connection.close(); } catch (Exception ex) {}
>        }
>                out.println ("</BODY></HTML>");
>    }
> }
> 
>   ReplyForward
> 
> jthompson@honda.co.nz
> java code: Context ctx = (Context) init.lookup("xxxxxx"); server.xml: 
> <Resour...
>                  Oct 6 (22 hours ago)
> 
> jthompson@honda.co.nz
> Please ignore my last post - it's wrong. (Answered before verifying).
>                  Oct 6 (22 hours ago)
> 
> jthompson@honda.co.nz
> Is that litterally what you have in your server.xml?
>                  Oct 6 (22 hours ago)
> 
> Eric Wulff
> No, literally I have the actual values. The same connection string I 
> use to s...
>                  Oct 6 (22 hours ago)
> 
> jthompson@honda.co.nz
> Is there a xxxxx.xml file in (TOMCAT_HOME)/conf/Catalina/localhost, 
> where xxx...
>                  Oct 6 (22 hours ago)
> 
> Eric Wulff
> Context name? I assume your referring to the ResourceParams name 
> attribute, j...
>                  Oct 6 (19 hours ago)
> 
> Phillip Qin
> <phillip.qin@shareowner.com> to Tomcat
>          More options    6:29am (7 hours ago)
> Detail, detail, detail.
> 
> 1. your context.xml
> 2. your web.xml
> 3. how do you obtain connection from pool, java code pls.
> 4. can you connect using pool
> 5. commons-pool version
> 
> Etc. etc.
> 
> You need to provide details otherwise we can't help.
> - Show quoted text -
> 
> -----Original Message-----
> From: Eric Wulff [mailto:ewulff@gmail.com]
> Sent: October 6, 2004 5:09 PM
> To: tomcat-user@jakarta.apache.org
> Subject: connection pooling
> 
> Hi all, I have gone over some of the tomcat docs and googled errors 
> but there is SO much information covering JNDI and Datasources... and 
> I'm hoping I don't have to be a JNDI/Datasource and XML guru just to 
> set up db connections via connection pool.
> 
> My situation is this...
> 
> System:
> Tomcat 5 on Fedora Core 2 connecting to a db on an Informix Dynamic 
> Server 9.4 on Windows Server
> 
> -I am able to connect to my db via typical JDBC 
> DriverManager.getConnection(). -This leads me to believe that my jdbc 
> driver is in the correct place ...CATALINA
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> 
>   ReplyForwardInvite Phillip to Gmail
> Send  Save Draft  Discard      Check spelling
> To:
> Cc:
> Bcc:
> 
> Add Cc | Add Bcc | Edit Subject | Attach a file
> Subject:
> 
> Attach a file
> 
> Send  Save Draft  Discard      Check spelling
> 
> Atishay Kumar
> <atishay.kumar@gmail.com> to Tomcat, me
>          More options    6:47am (6 hours ago)
> On Wed, 6 Oct 2004 14:37:58 -0700, Eric Wulff <ewulff@gmail.com> 
> wrote:
> > I have gone over some of the tomcat docs and googled errors but 
> > there is SO much information covering JNDI, connection pooling, and 
> > Datasources.  Can someone review the info below and consult or point 
> > me in the right direction?  Although I feel I'm missing something 
> > obvious, I can't find out what's wrong with my set-up.
> >
> > thx
> > Eric
> >
> > System:
> > Tomcat 5 on Fedora Core 2 connecting to a db on an Informix Dynamic 
> > Server 9.4 on Windows Server
> >
> > -I am able to connect to my db via typical JDBC 
> > DriverManager.getConnection().  This leads me to believe that my 
> > informix jdbc driver is in the correct place... 
> > CATALINA_HOME/common/lib -I have a Context set up in my server.xml 
> > per examples in a text tutorial I'm referencing
> >
> > Below listed...
> > -errors
> > -web.xml
> > -server.xml <Context> (minus connection actual values) -.java
> >
> > exception/errors:
> > -Exception: org.apache.commons.dbcp.SQLNestedException: Cannot 
> > create JDBC driver of class '' for connect URL 'null' SQL state: 
> > null Error code: 0
> >
> > -stack trace reveals this, but I can't see why since I have the 
> > driver in the correct directory...
> > java.sql.SQLException: No suitable driver at
> > java.sql.DriverManager.getDriver(DriverManager.java:243) at 
> > org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSo
> > ur
> > ce.java:773)
> >
> > web.xml:
> > <?xml version="1.0" encoding="ISO-8859-1"?>
> > <!DOCTYPE web-app
> >     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
> >     "http://java.sun.com/dtd/web-app_2_3.dtd">
> > <web-app>
> >         <servlet>
> >                 <servlet-name>Test Connection Pooling</servlet-name>
> >                 <servlet-class>TestConnectionPooling</servlet-class>
> >         </servlet>
> >
> >         <servlet-mapping>
> >                 <servlet-name>Test Connection Pooling</servlet-name>
> >                 <url-pattern>/testConnectionPooling</url-pattern>
> >         </servlet-mapping>
> >
> >         <resource-ref>
> >           <res-ref-name>jdbc/test_connect</res-ref-name>
> >           <res-type>javax.sql.DataSource</res-type>
> >           <res-auth>Container</res-auth>
> >         </resource-ref>
> > </web-app>
> >
> > server.xml <Context>:
> >   <Context path="/testConnectionPooling" 
> > docBase="testConnectionPooling" debug="0" reloadable="true">
> 
> <Resource name="jdbc/test_connection" auth="Container" 
> type="javax.sql.DataSource"/> is missing
> 
> >     <ResourceParams name="jdbc/test_connect">
> >       <parameter>
> >         <name>username</name>
> >         <value>informix</value>
> >       </parameter>
> >       <parameter>
> >         <name>password</name>
> >         <value>informix</value>
> >       </parameter>
> >       <parameter>
> >         <name>driverClassName</name>
> >         <value>com.informix.jdbc.IfxDriver</value>
> >       </parameter>
> >       <parameter>
> >         <name>url</name>
> >
> <value>jdbc:informix-sqli://url:port/dbName:INFORMIXSERVER=serverName<
> /value
> >
> >       </parameter>
> >     </ResourceParams>
> >   </Context>
> >
> > .java:
> > import java.io.*;
> > import java.sql.*;
> > // -Must import javax.naming use JNDI which is required to implement
data
> > //   resource references and hence connection pooling.
> > import javax.naming.*;
> > import javax.sql.*;
> > import javax.servlet.*;
> > import javax.servlet.http.*;
> > import java.util.*;
> >
> > public class TestConnectionPooling extends HttpServlet {
> >         private DataSource dataSource;
> >
> >         public void init(ServletConfig config) throws ServletException {
> >                 try {
> >                         Context init = new InitialContext();
> >                         // don't know what the 'java:comp/env' refers to
> >                         Context ctx = (Context)
> init.lookup("java:comp/env");
> >                         // I know "jdbc/conversion must match the 
> > web.xml res-ref-name of the web.xml but don't know what the path 
> > really
> refers to
> >                         dataSource = (DataSource)
> ctx.lookup("jdbc/test_connect");
> >                 } catch (NamingException ex) {
> >                         throw new ServletException("Cannot retrieve 
> > java:comp/env/jdbc/test_connect",ex);
> >                 }
> >         }
> >
> >         public void doGet(HttpServletRequest request, 
> > HttpServletResponse
> response)
> >         throws ServletException, IOException {
> >                 response.setContentType("text/html");
> >                 PrintWriter out = response.getWriter();
> >                 Connection connection = null;
> >                 out.println ("<HTML><HEAD><TITLE>Test Connection

> > Pooling</TITLE></HEAD><BODY>");
> >                 out.println("<H1>Customer Name Query</H1>");
> >
> >                 try {
> >                         synchronized(dataSource) {
> >                             connection = dataSource.getConnection();
> >                         }
> >                         out.println("<br>");
> >                         out.println("<strong>Loaded informix driver 
> > successfully via server.xml.</strong>" +
> >                                                 "Now attempting db
> connection.");
> >                         out.println("<br>");
> >                         PreparedStatement pstmt = 
> > connection.prepareStatement("SELECT blah FROM blah blah");
> >                         ResultSet results = pstmt.executeQuery();
> >                         if (!results.next()) {
> >                                 throw new SQLException("No data 
> > returned
> for some reason");
> >                         }
> >                         out.println("<br>");
> >                         while(results.next()) {
> >                                 out.println("<tr><td>" +
> results.getString("blah") + "</td></tr>");
> >                         }
> >         } catch (Exception ex) {
> >                         out.println("<br>");
> >                         out.println("Exception: " + ex);
> >                         if(ex instanceof SQLException) {
> >                                 SQLException sqlex = (SQLException) ex;
> >                                 out.println("<br>");
> >                                 out.println("SQL state:
> "+sqlex.getSQLState()+"<BR>");
> >                                 out.println("<br>");
> >                                 out.println("Error code:
> "+sqlex.getErrorCode()+"<BR>");
> >                                 out.println("<br><br>");
> >                                 sqlex.printStackTrace(out);
> >                                 out.println("<br><br>");
> >                         }
> >         }
> >         finally {
> >             try { connection.close(); } catch (Exception ex) {}
> >         }
> >                 out.println ("</BODY></HTML>");
> >
> >
> >     }
> > }
> 
> On Thu, 7 Oct 2004 09:29:09 -0400, Phillip Qin 
> <phillip.qin@shareowner.com>
> wrote:
> > Detail, detail, detail.
> >
> > 1. your context.xml
> > 2. your web.xml
> > 3. how do you obtain connection from pool, java code pls. 4. can you 
> > connect using pool 5. commons-pool version
> >
> > Etc. etc.
> >
> > You need to provide details otherwise we can't help.
> >
> >
> >
> > -----Original Message-----
> > From: Eric Wulff [mailto:ewulff@gmail.com]
> > Sent: October 6, 2004 5:09 PM
> > To: tomcat-user@jakarta.apache.org
> > Subject: connection pooling
> >
> > Hi all, I have gone over some of the tomcat docs and googled errors 
> > but there is SO much information covering JNDI and Datasources... 
> > and I'm hoping I don't have to be a JNDI/Datasource and XML guru 
> > just to set up db connections via connection pool.
> >
> > My situation is this...
> >
> > System:
> > Tomcat 5 on Fedora Core 2 connecting to a db on an Informix Dynamic 
> > Server 9.4 on Windows Server
> >
> > -I am able to connect to my db via typical JDBC 
> > DriverManager.getConnection(). -This leads me to believe that my 
> > jdbc driver is in the correct place ...CATALINA
> >
> > --------------------------------------------------------------------
> > -
> > To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> > For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> >
> > 
> >
> >
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: tomcat-user-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: tomcat-user-help@jakarta.apache.org
> 
> !DSPAM:4165a84c9322136420805!
> 
>

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


!DSPAM:4165bb7715701366110907!

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message