On Nov 7, 2013, at 11:58 PM, Anu Prab <anupr...@gmail.com> wrote:

>>> I am using Tomcat 7.0.42 and Tomcat jdbc pool.
>
>> Just to be perfectly clear, how are you using this?  With a <Resource/>
> tag in your Tomcat >configuration or are you creating the pool in your
> code?  Either way, include the necessary >config or code which shows how
> you've defined the pool.
>
>> The pool configuration is in context.xml. A sample of the config looks
like
> this:
>
>>  <Resource name="jdbc/name"
>>              auth="Container"
>>             type="javax.sql.DataSource"
>>              fairQueue="true"
>>             factory="<customized-factory>"

>What factory are you using?  It's important to share.  Without it we don't
know which pool you're using.

A customized factory which extends
org.apache.tomcat.jdbc.pool.DataSourceFactory

>>              username="<username>"
>>              password="<password>"
>>              driverClassName="oracle.jdbc.OracleDriver"
>>             url="<url>"
>>              timeBetweenEvictionRunsMillis="1800000"
>>              validationQuery="SELECT 1 from dual"
>>              validationInterval="30000"
>>              maxActive="50"
>>              minIdle="4"
>>              maxIdle="4"
>>              maxWait="10000"
>>              initialSize="4"
>>              removeAbandonedTimeout="60"
>>              removeAbandoned="true"
>>              logAbandoned="false"

>You should enable this so you're alerted if your application is not
properly returning connections.

>>              minEvictableIdleTimeMillis="
600000"
>>              initSQL="<initSQL>"

Is this SQL valid?  If for some reason this SQL was failing, it would cause
your connection count to go to zero.  Same with the validation query,
although that looks OK.

>>              testOnBorrow="false"
>>              testOnReturn="false"
>>              testWhileIdle="true"
>>    />
>>
>>> Once the pool is created
>>> with the default configuration, I obtained few connections from this
> pool.
>
>> Again, how are you obtaining connections?  Is this through JNDI or
through
> direct access by >code in your application?  An example would be helpful.
>
>> The connections are being obtained by the code through JNDI lookup.
Here's
>> the code sample:
>
>> Context ctx = (Context)new InitialContext().lookup("java:comp/env/");
>> DataSource ds = (DataSource)ctx.lookup("jdbc/name");
>> ds.getConnection();
>>
>
>>> But after certain amount of time, dataSource.getSize() shows the size as
> 0!
>
>> How are you determining this?  Are you looking at it in a debugger?  Do
>> you have a direct >reference to the data source in your code?  If so, can
>> you show an example?
>>
>> I am doing a lookup for the data source in the code. The lookup example
is
> the same as above. The only addition is after getting the data source,
> dataSource.getSize() is invoked.

>How long does it take for the size to go to zero?  When it does, what do
the active and idle >counts show?  Are they zero too?

Few minutes, not sure of the exact timing. Yes, all are 0.

> Also, what happens when you try to get a connection after the pool count
has dropped to 0?  >Does it get a new connection?  Does it hang waiting?
 Does it generate any error messages?

>Is there any reason why you might be getting disconnected from the
database side or from a >firewall in between your application and the
database?

I can still get newer connections even after the count drops to 0.

-Anu

Reply via email to