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]