23 January 2013

Transaction Timeouts in Oracle SOA Suite SCA Applications

I am currently working with Oracle SOA Suite 11.1.1.6 on WebLogic 10.3.6 and ran into a problem with a deployed SCA application that retrieves data from a web service and merges the results in a table using a DbAdapter to an Oracle database data source.

However, if the service took more than 30 seconds to complete (typically when most of the result set already existed in the database during the merge) then the service would timeout (see below).

The reason for this is the default WebLogic JTA timeout, which is set to 30 seconds. You can adjust it in the WebLogic /console -> Home -> JTA -> Timeout Seconds. In my case 120 seconds did the trick.


 <Jan 23, 2013 8:25:47 PM GMT> <Warning> <oracle.soa.mediator.common> <BEA-000000> <Transaction commit failed due to excetipn  
 weblogic.transaction.RollbackException: Transaction timed out after 31 seconds  
 BEA1-674F6821D9B2  
 ....  
 <Jan 23, 2013 8:25:47 PM GMT> <Error> <oracle.soa.mediator.serviceEngine> <BEA-000000> <Rolling back transaction due to ORAMED-03503:[Transaction Commit]Unable to commit transaction. Transaction has been rolled back.Possible Fix:Check log file for any exceptions and contact Oracle Support Services for further help.>  
 <Jan 23, 2013 8:25:47 PM GMT> <Warning> <oracle.soa.mediator.common> <BEA-000000> <Transaction rollback failed due to exception  
 java.lang.IllegalStateException: Transaction does not exist  
 ...  
 <Jan 23, 2013 8:25:47 PM GMT> <Error> <oracle.soa.mediator.serviceEngine> <BEA-000000> <Error in rolling back transaction due to ORAMED-03504:[Transaction Rollback]Unable to rollback transaction.Possible Fix:Check log file for any exceptions and contact Oracle Support Services for further help.  
 oracle.tip.mediator.infra.exception.MediatorException: ORAMED-03504:[Transaction Rollback]Unable to rollback transaction.Possible Fix:Check log file for any exceptions and contact Oracle Support Services for further help.  
 ...  
 >  
 <Jan 23, 2013 8:25:47 PM GMT> <Error> <oracle.soa.mediator.serviceEngine> <BEA-000000> <Updating fault processing DMS metrics>  
 <Jan 23, 2013 8:25:47 PM GMT> <Error> <oracle.soa.mediator.serviceEngine> <BEA-000000> <Got an exception: weblogic.transaction.RollbackException: Transaction timed out after 31 seconds  
 BEA1-674F6821D9B2  
 oracle.tip.mediator.infra.exception.MediatorException: ORAMED-03503:[Transaction Commit]Unable to commit transaction. Transaction has been rolled back.Possible Fix:Check log file for any exceptions and contact Oracle Support Services for further help.  
     at oracle.tip.mediator.common.JTAHelper.commitTransaction(JTAHelper.java:265)  
     at oracle.tip.mediator.serviceEngine.MediatorServiceEngine.process(MediatorServiceEngine.java:881)  
     at oracle.tip.mediator.serviceEngine.MediatorServiceEngine.post(MediatorServiceEngine.java:663)  
     at oracle.integration.platform.blocks.mesh.AsynchronousMessageHandler.doPost(AsynchronousMessageHandler.java:142)  
     at oracle.integration.platform.blocks.mesh.MessageRouter.post(MessageRouter.java:197)  
     at oracle.integration.platform.blocks.mesh.MeshImpl.post(MeshImpl.java:215)  
     at sun.reflect.GeneratedMethodAccessor1974.invoke(Unknown Source)  
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)  
     at java.lang.reflect.Method.invoke(Method.java:597)  
     at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)  
     at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)  
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)  
     at oracle.integration.platform.metrics.PhaseEventAspect.invoke(PhaseEventAspect.java:59)  
     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)  
     at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)  
     at $Proxy331.post(Unknown Source)  
     at oracle.integration.platform.blocks.soap.WebServiceEntryBindingComponent.doMessageProcessing(WebServiceEntryBindingComponent.java:1542)  
 ...  




No comments: