|
From: Juergen H. <ju...@in...> - 2005-07-19 13:13:58
|
Any news on that front, Dave? Have you had a chance to try a recent nightly
snapshot?
Juergen
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf Of
Juergen Hoeller
Sent: Saturday, July 16, 2005 9:21 PM
To: spr...@li...
Subject: Re: [Springframework-developer] UnexpectedRollbackException with
nested TransactionInterceptor from SLSB
Hi Dave,
Thanks for pointing that out! This is indeed a case that can be handled more
appropriately in JtaTransactionManager.
JTA's registerSynchronization will throw a RollbackException if the existing
JTA transaction is already marked as rollback-only. This means that we
cannot register Spring transaction synchronizations there: Hence, I've
changed JtaTransactionManager to immediately trigger the synchronizations
with outcome status 'rollback' in that case, which should be appropriate.
I'll commit this tonight; it will be released in Spring 1.2.3. Please give
tomorrow's nightly snapshot (i.e. the one generated in 27 hours) a try and
let me know whether it works for you!
Juergen
-----Original Message-----
From: spr...@li...
[mailto:spr...@li...] On Behalf Of
Dave Ballard
Sent: Friday, July 15, 2005 6:13 PM
To: spr...@li...
Subject: [Springframework-developer] UnexpectedRollbackException with nested
TransactionInterceptor from SLSB
Hi Juergen,
I'm using Spring 1.2.2 with WebLogic 6.1. I've got two Spring-managed
"service" beans, both using JtaTransactionManager, with
"PROPAGATION_REQUIRED,-Exception" for transactional methods. Let's say I've
got:
* ServiceA.methodA()
* ServiceB.methodB()
In my scenario, methodA() throws an Exception. In the cases where Spring
starts the transaction, no problem. The caller receives the exception:
* caller->serviceA.methodA() - Exception received as expected
* caller->serviceB.methodB()->serviceA.methodA() - Exception received as
expected
When an EJB SLSB starts the transaction, the following scenario works as
expected:
* caller->SLSB->serviceA.methodA() - Exception received as expected
However, when the Spring-managed bean calls are nested, I receive an
UnexpectedRollbackException:
* caller->SLSB->serviceB.methodB()->serviceA.methodA() -
UnexpectedRollbackException received
Regards,
Dave
---
ERROR 10:47:05,966 [ExecuteThread: '30' for queue: 'default'] [user]
(TransactionAspectSupport.java:279) - Application exception overridden by
rollback exception
myapp.exceptions.common.SystemException: foo
at
myapp.service.cashmgmt.CashMgmtServiceImpl.findFoobar(CashMgmtServiceImpl.ja
va:298)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopU
tils.java:292)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
(ReflectiveMethodInvocation.java:155)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:122)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:57)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy107.findFoobar(Unknown Source)
at
myapp.service.mtran.PaymentCancelServiceImpl.findFoobar(PaymentCancelService
Impl.java:479)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopU
tils.java:292)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
(ReflectiveMethodInvocation.java:155)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:122)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:57)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy119.findFoobar(Unknown Source)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB.processCa
ncel(MoneyTransactionSessionEJB.java:2876)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB_xvjdlx_EL
OImpl.processCancel(MoneyTransactionSessionEJB_xvjdlx_ELOImpl.java:719)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.ejb.access.LocalSlsbInvokerInterceptor.invoke(LocalSlsbI
nvokerInterceptor.java:66)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy126.processCancel(Unknown Source)
at myapp.webtier.advance.CancelCommit.process(CancelCommit.java:90)
at
jsp_servlet._jsp._advance.__cancel_confirm._jspService(__cancel_confirm.java
:157)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:275)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
myapp.utils.filters.AccessControlFilter.doFilterInternal(AccessControlFilter
.java:215)
at
myapp.utils.filters.AccessControlFilter.doFilter(AccessControlFilter.java:76
)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.java:2708)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:2427)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:159)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:140)
ERROR 10:47:05,981 [ExecuteThread: '30' for queue: 'default'] [user]
(MoneyTransactionSessionEJB.java:3031) - Cancel not processed
org.springframework.transaction.UnexpectedRollbackException: JTA transaction
unexpectedly rolled back (maybe due to a timeout); nested exception is
weblogic.transaction.RollbackException: Unknown reas on
weblogic.transaction.internal.AppSetRollbackOnlyException
at
weblogic.transaction.internal.TransactionImpl.setRollbackOnly(TransactionImp
l.java:486)
at
weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(Transac
tionManagerImpl.java:281)
at
weblogic.transaction.internal.TransactionManagerImpl.setRollbackOnly(Transac
tionManagerImpl.java:275)
at
org.springframework.transaction.jta.JtaTransactionManager.doSetRollbackOnly(
JtaTransactionManager.java:768)
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.p
rocessRollback(AbstractPlatformTransactionManager.java:533)
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.r
ollback(AbstractPlatformTransactionManager.java:506)
at
org.springframework.transaction.interceptor.TransactionAspectSupport.doClose
TransactionAfterThrowing(TransactionAspectSupport.java:276)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:61)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy107.findFoobar(Unknown Source)
at
myapp.service.mtran.PaymentCancelServiceImpl.findFoobar(PaymentCancelService
Impl.java:479)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopU
tils.java:292)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
(ReflectiveMethodInvocation.java:155)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:122)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:57)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy119.findFoobar(Unknown Source)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB.processCa
ncel(MoneyTransactionSessionEJB.java:2876)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB_xvjdlx_EL
OImpl.processCancel(MoneyTransactionSessionEJB_xvjdlx_ELOImpl.java:719)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.ejb.access.LocalSlsbInvokerInterceptor.invoke(LocalSlsbI
nvokerInterceptor.java:66)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy126.processCancel(Unknown Source)
at myapp.webtier.advance.CancelCommit.process(CancelCommit.java:90)
at
jsp_servlet._jsp._advance.__cancel_confirm._jspService(__cancel_confirm.java
:157)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:275)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
myapp.utils.filters.AccessControlFilter.doFilterInternal(AccessControlFilter
.java:215)
at
myapp.utils.filters.AccessControlFilter.doFilter(AccessControlFilter.java:76
)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.java:2708)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:2427)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:159)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:140)
--------------- nested within: ------------------
weblogic.transaction.RollbackException: Unknown reason - with nested
exception:
[weblogic.transaction.internal.AppSetRollbackOnlyException]
at
weblogic.transaction.internal.TransactionImpl.throwRollbackException(Transac
tionImpl.java:1526)
at
weblogic.transaction.internal.ServerTransactionImpl.registerSynchronization(
ServerTransactionImpl.java:450)
at
org.springframework.transaction.jta.JtaTransactionManager.doRegisterAfterCom
pletionWithJtaTransaction(JtaTransactionManager.java:818)
at
org.springframework.transaction.jta.JtaTransactionManager.registerAfterCompl
etionWithExistingTransaction(JtaTransactionManager.java:782)
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.t
riggerAfterCompletion(AbstractPlatformTransactionManager.java:635)
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.p
rocessRollback(AbstractPlatformTransactionManager.java:547)
at
org.springframework.transaction.support.AbstractPlatformTransactionManager.r
ollback(AbstractPlatformTransactionManager.java:506)
at
org.springframework.transaction.interceptor.TransactionAspectSupport.doClose
TransactionAfterThrowing(TransactionAspectSupport.java:276)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(Tr
ansactionInterceptor.java:61)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy119.findFoobar(Unknown Source)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB.processCa
ncel(MoneyTransactionSessionEJB.java:2876)
at
myapp.session.advance.tmoneytransaction.MoneyTransactionSessionEJB_xvjdlx_EL
OImpl.processCancel(MoneyTransactionSessionEJB_xvjdlx_ELOImpl.java:719)
at java.lang.reflect.Method.invoke(Native Method)
at
org.springframework.ejb.access.LocalSlsbInvokerInterceptor.invoke(LocalSlsbI
nvokerInterceptor.java:66)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(Reflect
iveMethodInvocation.java:144)
at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopPro
xy.java:174)
at $Proxy126.processCancel(Unknown Source)
at myapp.webtier.advance.CancelCommit.process(CancelCommit.java:90)
at
jsp_servlet._jsp._advance.__cancel_confirm._jspService(__cancel_confirm.java
:157)
at weblogic.servlet.jsp.JspBase.service(JspBase.java:27)
at
weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java
:275)
at weblogic.servlet.internal.TailFilter.doFilter(TailFilter.java:21)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
myapp.utils.filters.AccessControlFilter.doFilterInternal(AccessControlFilter
.java:215)
at
myapp.utils.filters.AccessControlFilter.doFilter(AccessControlFilter.java:76
)
at
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:27)
at
weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletCo
ntext.java:2708)
at
weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java
:2427)
at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:159)
at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:140)
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from
IBM. Find simple to follow Roadmaps, straightforward articles, informative
Webcasts and more! Get everything you need to get up to speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies from
IBM. Find simple to follow Roadmaps, straightforward articles, informative
Webcasts and more! Get everything you need to get up to speed, fast.
http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
Springframework-developer mailing list
Spr...@li...
https://lists.sourceforge.net/lists/listinfo/springframework-developer
|