I was under the impression also that the BasicDataSourceFactory is a
default.

On Wed, 2002-09-25 at 04:46, Glenn Nielsen wrote:
> Your config isn't configured to use DBCP.  It is missing the following:
> 
>              <parameter>
>                <name>factory</name>
>                <value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
>              </parameter>
> 
> That is why none of the DBCP features were working.
> 
> Glenn
> 
> Amitabh Dubey wrote:
> > This is what my final working server.xml file looks like
> > 
> > <Resource name="SQLServerDS" scope="Shareable" type="javax.sql.DataSource"/>
> >     <ResourceParams name="SQLServerDS">
> >       <parameter>
> >         <name>url</name>
> > 
> > <value>jdbc:microsoft:sqlserver://dnas07:1113;DatabaseName=NorthWind</value>
> >       </parameter>
> >       <parameter>
> >         <name>validationQuery</name>
> >         <value></value>
> >       </parameter>
> >       <parameter>
> >         <name>maxIdle</name>
> >         <value>3</value>
> >       </parameter>
> >       <parameter>
> >         <name>maxActive</name>
> >         <value>5</value>
> >       </parameter>
> >       <parameter>
> >         <name>driverClassName</name>
> >         <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
> >       </parameter>
> >       <parameter>
> >         <name>maxWait</name>
> >         <value>6000</value>
> >       </parameter>
> >       <parameter>
> >         <name>removeAbandoned</name>
> >         <value>true</value>
> >       </parameter>
> >       <parameter>
> >         <name>user</name>
> >         <value>sa</value>
> >       </parameter>
> >       <parameter>
> >         <name>removeAbandonedTimeout</name>
> >         <value>5</value>
> >       </parameter>
> >       <parameter>
> >         <name>password</name>
> >         <value>sa</value>
> >       </parameter>
> >     </ResourceParams>
> > 
> > And this was my test program
> > 
> > 
> > try {
> > 
> >         // assumes jndi.properties has been configured appropriately
> >         Context initCtx = new InitialContext();
> >             Context envCtx = (Context) initCtx.lookup("java:comp/env");
> > 
> >         // Get a Connection
> >         DataSource ds = (DataSource) envCtx.lookup(jndiName);
> >         Connection con = null;
> >             Statement st = null;
> > 
> >             ResultSet res = null;
> > 
> >             ResultSetMetaData meta = null;
> > 
> >         try
> >             {
> > 
> >                     con = ds.getConnection();
> > 
> >                     st = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
> >                                                        ResultSet.CONCUR_READ_ONLY);
> > 
> >                     res = st.executeQuery(sql);
> > 
> >                     meta = res.getMetaData();
> >                     int cols = meta.getColumnCount();
> >                     // since this is a scrollable ResultSet,
> >                     // do something a little strange...
> >                     while (!res.isLast()) {
> >                         res.next();
> >                         for (int i=1; i<=cols; i++) {
> >                             Object val = res.getObject(i);
> >                             System.out.print("\t" + meta.getColumnLabel(i) + ": ");
> >                             System.out.print(val == null ? " " : val.toString());
> >                         }
> >                         System.out.print("\n");
> >                     }
> >         }
> >             catch (SQLException sqle)
> >             {
> >                     sqle.printStackTrace();
> >         }
> >         finally
> >             {
> >                     // PoolMan closes ResultSets and Statements whenever
> >                     // Connections are closed, no need for it here
> > 
> >                     if (null != res)
> >                     {
> >                             try
> >                             {
> >                                     res.close();
> >                             }
> >                             catch(SQLException e)
> >                             {
> >                             }
> >                     }
> > 
> >                     if (null != st)
> >                     {
> >                             try
> >                             {
> >                                     st.close();
> >                             }
> >                             catch(SQLException e)
> >                             {
> >                             }
> >                     }
> > 
> >                     if (con != null)
> >                     {
> >                             try
> >                             {
> >                                     con.close();
> >                             }
> >                             catch (SQLException sqle2)
> >                             {
> >                             }
> >                     }
> >         }
> > 
> >     } catch (javax.naming.NameNotFoundException nne) {
> >         System.out.println("ERROR: No DataSource is registered under the name "
> > +
> >                            jndiName + ", please check your poolman.props " +
> >                            " and deployment tool.\n");
> >         return nne.getMessage();
> >     } catch (javax.naming.NamingException nex) {
> >         System.out.println("ERROR: JNDI Exception Occurred. Is your JNDI
> > resource available?\n");
> >         nex.printStackTrace();
> >         return nex.getMessage();
> >     } catch (java.security.AccessControlException ae) {
> >         System.out.println("ERROR: You cannot execute the DataSource example
> > with " +
> >                            "the security permissions you are using. Try using the 
>" +
> >                            "poolman.policy file: " +
> >                            "java -Djava.security.policy=../lib/poolman.policy
> > PoolManSample.\n");
> >         return ae.getMessage();
> >     }
> > 
> > I was facing the problem, when i was not explicitly closing the resultset
> > and statement. but if i do, then the connections are reused and the pool
> > grows correctly. But the removeabandoned definitly does not work with Tomcat
> > 4.1.2. I am using this in a webservice and Tomcat 4.1.2 came packaged with
> > the jwsdk from sun. if i find tomcat bugy, i might downgrade.
> > 
> > Amitabh
> > 
> > -----Original Message-----
> > From: Glenn Nielsen [mailto:[EMAIL PROTECTED]]
> > Sent: Tuesday, September 24, 2002 11:04 PM
> > To: Tomcat Users List
> > Subject: Re: DBCP pool always increasing
> > 
> > 
> > In the config you posted you didn't have RemoveAbandoned configured, by
> > default is is set to false.  You also didn't set the maxActive, by default
> > I believe it is unlimited.  An example of your code which uses the
> > JNDI named datasource would also be helpfull in debugging these type
> > of problems.
> > 
> > Regards,
> > 
> > Glenn
> > 
> > Amitabh Dubey wrote:
> > 
> >>I used performance monitor to view the number of user connections to the
> >>database. Although i was closing the connection in my client code, the
> > 
> > pool
> > 
> >>size / connections to the database were always increasing. Given that i
> > 
> > was
> > 
> >>executing only one program at a time, i would expect that this number not
> > 
> > go
> > 
> >>on increasing.
> >>
> >>So i closed not only the connections, but resultset and statements as
> > 
> > well.
> > 
> >>This solved my problem. However, the tomcat dbcp documentation suggests
> > 
> > that
> > 
> >>we have a removeAbandoned and the timeout for this property also set. My
> >>remove abandones was set to true and the timeout value was 5 secs. But
> > 
> > these
> > 
> >>values seem to be ignored. So the only sure way out is to close everything
> >>explictly.
> >>
> >>Amitabh
> >>
> >>-----Original Message-----
> >>From: Glenn Nielsen [mailto:[EMAIL PROTECTED]]
> >>Sent: Tuesday, September 24, 2002 7:22 PM
> >>To: Tomcat Users List
> >>Subject: Re: DBCP pool always increasing
> >>
> >>
> >>What do you mean by your pool is increasing in size?  That the number of
> >>open
> >>connections to the db is increaing? What is the indicator that this
> >>is happening?  The more specific you can be the better chance that someone
> >>can answer your question.
> >>
> >>Glenn
> >>
> >>Amitabh Dubey wrote:
> >>
> >>
> >>>Hello All,
> >>>  I managed to use DBCP with SQL Server and am able to get connections
> >>
> >>from
> >>
> >>
> >>>the pool. After i execute my query, i close the connection also, but it is
> >>>going back to my pool and i have verified that. However, what I do not
> >>>understand is this : Why does the pool go on increasing and never
> >>
> >>decreasing
> >>
> >>
> >>>in size. This is what my server.xml looks like
> >>>
> >>><ResourceParams name="SQLServerDS">
> >>>     <parameter>
> >>>       <name>validationQuery</name>
> >>>       <value></value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>user</name>
> >>>       <value>sa</value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>url</name>
> >>>
> >>>
> > <value>jdbc:microsoft:sqlserver://dnas07:1113;DatabaseName=NorthWind</value>
> > 
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>password</name>
> >>>       <value>sa</value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>maxActive</name>
> >>>       <value>3</value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>maxWait</name>
> >>>       <value>120</value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>driverClassName</name>
> >>>       <value>com.microsoft.jdbc.sqlserver.SQLServerDriver</value>
> >>>     </parameter>
> >>>     <parameter>
> >>>       <name>maxIdle</name>
> >>>       <value>5</value>
> >>>     </parameter>
> >>>   </ResourceParams>
> >>>
> >>>
> >>>If i understand the parameters correctly, then
> >>>
> >>>maxActive --> Maximum number of connections allowed to the database (What
> >>>happens when this number is reached? For me i get a new connection and the
> >>>pool increases. Is this the expected behavior? Can i change it to fail or
> >>>block instead?)
> >>>
> >>>maxidle --> Maximum number of idle connections that the pool should hold
> >>>(For me my pool never goes down to this limit)
> >>>
> >>>maxWait --> Maximum time to wait for a dB connection to become available
> >>
> >>in
> >>
> >>
> >>>ms.
> >>>
> >>>removeAbandoned --> recycle connections if the removeAbandonedTimeout is
> >>>reached and the connection is idle. in our case it is true.
> >>>
> >>>removeAbandonedTimeout --> 5
> >>>
> >>>
> >>>If i am correct, why is my pool growing forever and not reducing in size?
> >>>
> >>>Any ideas?
> >>>
> >>>Amitabh
> >>>
> >>>
> >>>--
> >>>To unsubscribe, e-mail:
> >>
> >><mailto:[EMAIL PROTECTED]>
> >>
> >>>For additional commands, e-mail:
> >>
> >><mailto:[EMAIL PROTECTED]>
> >>
> >>
> >>
> >>
> >>--
> >>To unsubscribe, e-mail:
> >><mailto:[EMAIL PROTECTED]>
> >>For additional commands, e-mail:
> >><mailto:[EMAIL PROTECTED]>
> >>
> >>
> >>
> >>--
> >>To unsubscribe, e-mail:
> > 
> > <mailto:[EMAIL PROTECTED]>
> > 
> >>For additional commands, e-mail:
> > 
> > <mailto:[EMAIL PROTECTED]>
> > 
> > 
> > 
> > 
> > --
> > To unsubscribe, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail:
> > <mailto:[EMAIL PROTECTED]>
> > 
> > 
> > 
> > --
> > To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> > For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 
> 
> 
> 
> --
> To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>
> 


--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to