Hi,  I am getting the timeout exception for connection pooling, i am using
Tomca 4.1 and datasource to retrieve connections.
I am attaching all the soure code and configuration files used in my
application, please suggest where iam doing wrong...

SEVERE: getConnection()--SQLException
org.apache.commons.dbcp.SQLNestedException: Cannot get a connection, pool
exhausted, cause:
java.util.NoSuchElementException: Timeout waiting for idle object
        at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPoo
l.java:801)
        at
org.apache.commons.dbcp.PoolingDataSource.getConnection(PoolingDataSource.ja
va:140)
        at
org.apache.commons.dbcp.BasicDataSource.getConnection(BasicDataSource.java:5
18)
        at
com.mypublisher.oemapi.DAO.DBAccess.getConnection(DBAccess.java:47)
        at com.mypublisher.oemapi.DAO.Persister.<init>(Persister.java:46)
        at
com.mypublisher.oemapi.SubmitOrder.SubmitOrder(SubmitOrder.java:61)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
        at java.lang.reflect.Method.invoke(Method.java:324)
        at org.apache.xmlrpc.Invoker.execute(Invoker.java:168)
        at
org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:123)
        at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185)
        at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151)
        at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:128)
        at
com.mypublisher.oemapi.xmlrpc.XmlRpcServlet.doPost(XmlRpcServlet.java
============================================================================
===========
server.xml
---------
<!-- JNDI datasource setup to connect to Oracle database for
xmlrpc-oemapi-->
        <Context path="/rpcoemapi" docBase="rpcoemapi"
                debug="5" reloadable="true" crossContext="true" useNaming="true">

        <Logger className="org.apache.catalina.logger.FileLogger"
             prefix="localhost_rpcoemapi_log." suffix=".txt"
             timestamp="true"/>
       <Resource name="jdbc/MYDB"
               auth="Container"
               type="javax.sql.DataSource"/>

        <ResourceParams name="jdbc/MYDB">
        <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>5</value>
        </parameter>

        <!-- Maximum number of idle dB connections to retain in pool.
         Set to 0 for no limit.
         -->
        <parameter>
         <name>maxIdle</name>
         <value>2</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>username</name>
          <value>ioeadmin</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>ioeadmin</value>
        </parameter>

        <!-- Class name for mm.mysql JDBC driver -->
        <parameter>
          <name>driverClassName</name>
          <value>oracle.jdbc.driver.OracleDriver</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:oracle:thin:@ipaddress:1521:MYDB</value>
        </parameter>
</ResourceParams>
</Context>

============================================================================
===================================
DatasourceFactory is a singleton class used to retrieve the datasource from
tomcat using JNDi..and connection is obtained from datasource...
  public static DataSource getInstance() throws SystemException
    {
        if (!isDataSrcAvaliable)
        {
            if (dataSource == null)
            {
                    new DataSourceFactory();
                    doLookUp();
                    isDataSrcAvaliable = true;
            } //end if (dataSource == null)
        }// end if (!isDataSrcAvaliable)
        return dataSource;
    } /* end getInstance() */

doLookUp method does this:
                Context ctx = new InitialContext();
            String dataSrc =
msgResource.getMessage(OEMAPIConstants.DATA_SOURCE_NAME);
            Context env = (Context)ctx.lookup("java:comp/env");
            dataSource = (DataSource) env.lookup(dataSrc);


public static Connection getConnection() throws DAOException
        {
           DataSource ds = (DataSource) DataSourceFactory.getInstance();
           Connection con = ds.getConnection();
           return ds.getConnection();
        }
and every database lookup class, gets this connection and closes the
connection after the query to database...



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

Reply via email to