Hi All,
While working with some JTA time configuration over weblogic server for oracle SOA11g i found an issue and after some discussion i found that it is an weblogic bug till 12c.
For producing this error, follow the use case and it's configuration.
1.Start the weblogic server
2. Weblogic JTA time configuration to maximum value.
3.Restart the weblogic server and SOA sever, When server will be in starting mode it will start throwing error for "Transaction could not begin:Invalid value -1 passed to setTransactionTimeout(int)".
Error Logs:
Unable to refresh the driver locator cache, due to the following error: EJBerror: : javax.transaction.InvalidTransactionException: Transaction could not begin:
Invalid value -1 passed to setTransactionTimeout(int)
at weblogic.ejb.container.internal.MethodDescriptor.startTransaction(MethodDescriptor.java:306)
at weblogic.ejb.container.internal.MethodDescriptor.getInvokeTx(MethodDescriptor.java:422)
at weblogic.ejb.container.internal.MethodDescriptor.getInvokeTxForCom(MethodDescriptor.java:468)
at 71)
at com.bea.core.repackaged.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.doProceed(DelegatingIntroductionInterceptor.java:131)
at com.bea.core.repackaged.springframework.aop.support.DelegatingIntroductionInterceptor.invoke(DelegatingIntroductionInterceptor.java:119)
at com.bea.core.repackaged.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at com.bea.core.repackaged.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
at com.sun.proxy.$Proxy409.ejbTimeout(Unknown Source)
at weblogic.ejb.container.timer.TimerImpl.timerExpired(TimerImpl.java:301)
at weblogic.timers.internal.TimerImpl.run(TimerImpl.java:273)
at weblogic.work.SelfTuningWorkManagerImpl$WorkAdapterImpl.run(SelfTuningWorkManagerImpl.java:545)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
; nested exception is: javax.transaction.InvalidTransactionException: Transaction could not begin:
Invalid value -1 passed to setTransactionTimeout(int)>>
4.As we made the JTA time to it's maximum value and weblogic SOA server started it's configuration with that JTA time which is not at all supported in weblogic. With this error we need to re-configure the JTA time with such configuration "Ideally the JTA timeout should be an integer value with the maximum positive value ( 2 ^ 31 - 1 => 2147483647. ) . Check to see if trying to set a value greater than this range. (Set it to 2 ^ 30 => 1073741824 and hopefully it should work)"This is a known bug in weblogic versions prior to 12c and the workaround is to set the JTA timeout to 1073741824. If you set this property to the above mentioned value and the issue still exists, then suggest to raise a case with oracle support.

Restart both weblogic and SOA server, it will work.
Hope it will save any developer among us with this error case.
Comments
Post a Comment