Consering the fair analisys of Charles, we decided to move applications
to Poolable connection factory
To do so I created a factory iun server.xml as follow:

<Resource name="jdbc/crm" auth="Container" type="javax.sql.DataSource"/>
        <ResourceParams name="jdbc/crm">
                <parameter>
                        <name>url</name>

<value>jdbc:oracle:thin:@1.2.3.4:1521:SID</value>
                </parameter>
                <parameter>
                        <name>user</name>
                        <value>scott</value>
                </parameter>
                <parameter>
                        <name>password</name>
                        <value>tiger</value>
                </parameter>
                <parameter>
                        <name>maxActive</name>
                        <value>60</value>
                </parameter>
                <parameter>
                        <name>factory</name>

<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>
                <parameter>
                         <name>driverClassName</name>
                         <value>oracle.jdbc.OracleDriver</value>
                </parameter>
        </ResourceParams>

and in web.xml of the app, I added at the end:
<resource-ref>
                <description>
                        Database connection pool
                </description>
                <res-ref-name>jdbc/crm</res-ref-name>
                <res-type>javax.sql.DataSource</res-type>
                <res-auth>Container</res-auth>
        </resource-ref>

When trying to connect to the application. Login succeed but I get the
following errors in catalina.out:

org.apache.commons.dbcp.SQLNestedException: Cannot create
PoolableConnectionFactory (invalid argument in call)

Did i miss something in xml definitions or is it a problem with the way
the app uses the connection Pool?

regards

Le jeudi 26 août 2010 à 22:04 -0500, Caldarale, Charles R a écrit :

> > From: Alexandre Chapellon [mailto:alexandre.chapel...@mana.pf] 
> > Subject: Re: pick load
> 
> > To me this sounds like a pool of database connection
> > that is full
> 
> It's not a full connection pool - you're not using one.  It's also likely 
> that your database is a bit sluggish in establishing connections.  That 
> version of the JVM sets a global lock while creating a connection, with the 
> expectation that it will occur fairly quickly, allowing the next connection 
> to be established.  Note that this has nothing to do with Tomcat.
> 
> > I don't really know how/where to deal with it.
> 
> Fix your DB, and configure a connection pool rather than calling 
> com.mana.oc.DBConnection.getConnectionCRM directly, so each request doesn't 
> have to acquire a new connection.  Also upgrade to supported versions of 
> things, since both the level of Tomcat you're on and the JVM have been 
> unsupported for quite some time.  The most recent JVMs do not keep that 
> particular global lock up on the connection request to the DB, so moving to 
> Java 6 might help.
> 
> > If someone has the kind willing to take a look at the 
> > full dump here it is: http://pastebin.com/2v3PVTDm
> 
> A brief look showed only one thread having an active DB connection, with all 
> of the rest stuck on the global lock trying to get a connection in order to 
> authenticate the client or else just waiting for something to do.  Since 
> you're not using a connection pool for the authentications, you're 
> serializing the requests, so it's no wonder your throughput is terrible.  
> Even the greatly improved performance of newer Tomcat and JVM versions won't 
> overcome bad webapp design.
> 
>  - Chuck
> 
> 
> THIS COMMUNICATION MAY CONTAIN CONFIDENTIAL AND/OR OTHERWISE PROPRIETARY 
> MATERIAL and is thus for use only by the intended recipient. If you received 
> this in error, please contact the sender and delete the e-mail and its 
> attachments from all computers.
> 


Reply via email to