Internal error: Cannot obtain XAConnection
605669Jun 24 2010 — edited Jun 30 2010Hi all,
Please giving me an assistance,
I use JMS Proxy service for listen and put all message to internal destination queue. I already throttled message to 1000 concurrent messages, osb work very awesome. BUT on further processing I need to pull that message and insert to database. I use spring async message listener for listen and pull message from internal destination queue I mentioned above, then I use thread pool executor for insertion to database.
with low quota of message it's OK, but on peak time, with million message on couples of hour, my application cannot obtain XA connection. It's seem the connection to database is too high and everything becoming "unstable", eventhough weblogic is successfully recover it, but I'm afraid there are missing messages insertion.
this is detail error :
2010-06-24 08:47:53,836 [PooledThread-2] jms.JMSConcurentConsumer
[ERROR] - Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: [BEA][Oracle JDBC Driver]No more data available to read.
java.sql.SQLException: Internal error: Cannot obtain XAConnection weblogic.common.resourcepool.ResourceDeadException: 0:weblogic.common.ResourceException: [BEA][Oracle JDBC Driver]No more data available to read.
at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:1311)
at weblogic.jdbc.jta.DataSource.getConnection(DataSource.java:425)
at weblogic.jdbc.jta.DataSource.connect(DataSource.java:382)
at weblogic.jdbc.common.internal.RmiDataSource.getConnection(RmiDataSource.java:338)
and another noticed, the weblogic connection pool never put the state to overloaded, if there any additional config on oracle database for multi threading application?, how about I change the insertion using java callout on osb after I receive the message directly?
Really thanks in advance.
Mr.K