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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]