Hi
I am using programatic transaction management and it works fine when I test it in single user environment. But in production when thousands of users hitting the same method at same time, it fails while doing 'commit' and gives me following error:
"Transaction is already completed - do not call commit or rollback more than once per transaction"
Here is the code which gets me a transaction:
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.P ROPAGATION_REQUIRED);
status = getTransactionManager().getTransaction(def);
Here is my xml showing datasource and transaction manager:
<bean id="campaignDataSource" class="org.springframework.jndi.JndiObjectFactoryB ean" singleton="true">
<property name="jndiName" value="java:comp/env/campaignRef" />
</bean>
<bean id="campaignTransactionManager" class="org.springframework.jdbc.datasource.DataSou rceTransactionManager" singleton="false">
<property name="dataSource">
<ref bean="campaignDataSource"/>
</property>
</bean>
This error comes when I call
getTransactionManager().commit(status);
And this works fine with few users hitting my site, but when load increases I start getting this error.
Here is the complete error stack.
2007-08-16 10:35:12,446 ERROR - SVC ID[221503638] CLIENT[PARTS] METHOD[getLead] service failed with an unexpected exception[Transaction is already completed - do not call commit or rollback more than once per transaction]
org.springframework.transaction.IllegalTransaction StateException: Transaction is already completed - do not call commit or rollback more than once per transaction
at org.springframework.transaction.support.AbstractPl atformTransactionManager.rollback(AbstractPlatform TransactionManager.java(Inlined Compiled Code))
at com.sears.os.business.ABaseBusinessBean.rollbackWo rk(ABaseBusinessBean.java(Inlined Compiled Code))
at com.sears.os.campaign.business.CampaignBusinessBea nNew.getLead(CampaignBusinessBeanNew.java(Compiled Code))
at com.sears.os.campaign.service.CampaignService.getL ead(CampaignService.java(Compiled Code))
at sun.reflect.GeneratedMethodAccessor119.invoke(Unkn own Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(De legatingMethodAccessorImpl.java(Compiled Code))
at java.lang.reflect.Method.invoke(Method.java(Compil ed Code))
at org.apache.soap.server.RPCRouter.invoke(Unknown Source)
at org.apache.soap.providers.RPCJavaProvider.invoke(U nknown Source)
at org.apache.soap.server.http.RPCRouterServlet.doPos t(Unknown Source)
at javax.servlet.http.HttpServlet.service(HttpServlet .java(Compiled Code))
at javax.servlet.http.HttpServlet.service(HttpServlet .java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.StrictServletInsta nce.doService(StrictServletInstance.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.StrictLifecycleSer vlet._service(StrictLifecycleServlet.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.ServicingServletSt ate.service(StrictLifecycleServlet.java:333)
at com.ibm.ws.webcontainer.servlet.StrictLifecycleSer vlet.service(StrictLifecycleServlet.java(Inlined Compiled Code))
at com.ibm.ws.webcontainer.servlet.ServletInstance.se rvice(ServletInstance.java(Compiled Code))
at com.ibm.ws.webcontainer.servlet.ValidServletRefere nceState.dispatch(ValidServletReferenceState.java( Compiled Code))
at com.ibm.ws.webcontainer.servlet.ServletInstanceRef erence.dispatch(ServletInstanceReference.java(Inli ned Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispat cher.handleWebAppDispatch(WebAppRequestDispatcher. java(Compiled Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispat cher.dispatch(WebAppRequestDispatcher.java(Compile d Code))
at com.ibm.ws.webcontainer.webapp.WebAppRequestDispat cher.forward(WebAppRequestDispatcher.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.doForwar d(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.srt.WebAppInvoker.handleIn vocationHook(WebAppInvoker.java(Compiled Code))
at com.ibm.ws.webcontainer.cache.invocation.CachedInv ocation.handleInvocation(CachedInvocation.java(Com piled Code))
at com.ibm.ws.webcontainer.cache.invocation.Cacheable InvocationContext.invoke(CacheableInvocationContex t.java(Compiled Code))
at com.ibm.ws.webcontainer.srp.ServletRequestProcesso r.dispatchByURI(ServletRequestProcessor.java(Compi led Code))
at com.ibm.ws.webcontainer.oselistener.OSEListenerDis patcher.service(OSEListener.java(Compiled Code))
at com.ibm.ws.webcontainer.http.HttpConnection.handle Request(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.readAndHandleReques t(HttpConnection.java(Compiled Code))
at com.ibm.ws.http.HttpConnection.run(HttpConnection. java(Compiled Code))
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.j ava(Compiled Code))
I would appreciate any help on this.
Thanks
Sudhir


Reply With Quote
)