Saturday, April 25, 2009

weblogic.jdbc.extensions.ConnectionDeadSQLException: weblogic.common.resourcepool.ResourceDeadException

weblogic.jdbc.extensions.ConnectionDeadSQLException: weblogic.common.resourcepool.ResourceDeadException


MisfireHandler: Error handling misfires: Failed to obtain DB connection
from data source 'soaNonManagedDS': java.sql.SQLException: 
Could notretrieve datasource via JNDI url 'jdbc/SOALocalTxDataSource' 
weblogic.jdbc.extensions.ConnectionDeadSQLException: 
weblogic.common.resourcepool.ResourceDeadException: 
0:weblogic.common.ResourceException: Could not create pool connection. 
The DBMS driver exception was: Socket read timed out[[org.quartz.JobPersistenceException: 
Failed to obtain DB connection from data source 'soaNonManagedDS': 
java.sql.SQLException: Could not retrieve datasource via JNDI url 
'jdbc/SOALocalTxDataSource' weblogic.jdbc.extensions.ConnectionDeadSQLException: 
weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: 
Could not create pool connection. The DBMS driver exception was: Socket read timed out 
[See nested exception: java.sql.SQLException: Could not retrieve datasource via JNDI 
url 'jdbc/SOALocalTxDataSource' weblogic.jdbc.extensions.ConnectionDeadSQLException: 
weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: 
Could not create pool connection. The DBMS driver exception was: Socket read timed out] 
at org.quartz.impl.jdbcjobstore.JobStoreCMT.getNonManagedTXConnection(JobStoreCMT.java:167) 
at org.quartz.impl.jdbcjobstore.JobStoreSupport.doRecoverMisfires(JobStoreSupport.java:3011) 
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.manage(JobStoreSupport.java:3789) 
at org.quartz.impl.jdbcjobstore.JobStoreSupport$MisfireHandler.run(JobStoreSupport.java:3809)


The above exception comes while reserved connection test started by application server while all connections are used by application. In general, we can stop the Application server test on connection, if we are running heavy load application. In Application console, we have to set Connection Pool param "test-connections-on-reserve" as false


Sample:

<jdbc-connection-pool-params> 
 <initial-capacity>0</initial-capacity>
 <max-capacity>50</max-capacity>    
 <capacity-increment>1</capacity-increment>    
 <connection-creation-retry-frequency-seconds>10</connection-creation-retry-frequency-seconds>    
 <test-frequency-seconds>300</test-frequency-seconds>    
 <strong><test-connections-on-reserve>false</test-connections-on-reserve> </strong>   
 <test-table-name>SQL SELECT 1 FROM DUAL</test-table-name>    
 <seconds-to-trust-an-idle-pool-connection>0</seconds-to-trust-an-idle-pool-connection>
</jdbc-connection-pool-params>
Read more about unexpected exception while enlisting

Unexpected exception while enlisting XAConnection:


Caused by: java.sql.SQLException: Unexpected exception while enlisting XAConnection 
java.sql.SQLException: Transaction rolled back: Transaction timed out after 50 seconds
BEA1-450F175C33A65FA1D8A0
at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:1431)
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1331)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:426)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:383)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:346)
at oracle.toplink.jndi.JNDIConnector.connect(JNDIConnector.java:123)
at oracle.toplink.jndi.JNDIConnector.connect(JNDIConnector.java:84)
at oracle.toplink.sessions.DatasourceLogin.connectToDatasource(DatasourceLogin.java:153)
at oracle.toplink.internal.databaseaccess.DatasourceAccessor.connectInternal(DatasourceAccessor.java:273)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.connectInternal(DatabaseAccessor.java:230)
at oracle.toplink.internal.databaseaccess.DatasourceAccessor.reconnect(DatasourceAccessor.java:478)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.reconnect(DatabaseAccessor.java:1342)
at oracle.toplink.internal.databaseaccess.DatasourceAccessor.incrementCallCount(DatasourceAccessor.java:251)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.basicExecuteCall(DatabaseAccessor.java:511)
at oracle.toplink.internal.databaseaccess.DatabaseAccessor.executeCall(DatabaseAccessor.java:467)
at oracle.toplink.internal.sessions.AbstractSession.executeCall(AbstractSession.java:800)
at oracle.toplink.internal.sessions.IsolatedClientSession.executeCall(IsolatedClientSession.java:115)
at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(
DatasourceCallQueryMechanism.java:193)
at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeCall(
DatasourceCallQueryMechanism.java:179)
at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeNoSelectCall(
DatasourceCallQueryMechanism.java:222)
at oracle.toplink.internal.queryframework.DatasourceCallQueryMechanism.executeNoSelect(
DatasourceCallQueryMechanism.java:202)
at oracle.toplink.queryframework.DataModifyQuery.executeDatabaseQuery(DataModifyQuery.java:55)
at oracle.toplink.queryframework.DatabaseQuery.execute(DatabaseQuery.java:674)
at oracle.toplink.queryframework.DatabaseQuery.executeInUnitOfWork(DatabaseQuery.java:597)
at oracle.toplink.internal.sessions.UnitOfWorkImpl.internalExecuteQuery(UnitOfWorkImpl.java:2741)

This exception thrown out due to the JTA time out specified in application server exceeded for the connection. Here in this exception, 50seconds specified and crossed the limit. We can increase this number(upto 600s) and test the application , if still problem persist, then we have to eye on Database.

Read More about ConnectionDeadSQLException

Recent Posts

Unix Commands | List all My Posts

Texts

This blog intended to share the knowledge and contribute to JAVA Community such a way that by providing samples and pointing right documents/webpages. We try to give our knowledege level best and no guarantee can be claimed on truth. Copyright and Terms of Policy refer blogspot.com