Yes,  jboss 4.2.1 causes org.springframework.transaction.NoTransactionException.

The integration between Spring and JBOSS does not work properly anymore after 
upgrading jboss from 4.0.4 to 4.2.1. Basically I have a CMT Stateless Session 
Bean EJB (SubscrFacadeBean) which is calling a spring bean (KtfPerformerImpl) 
as follows:
... SubscrFacadeBean.createSubscr(...)
  | {
  |      // Get KtfPerformerImpl from Bean Factory
  |      KtfPerformerImpl impl = ...;
  |      
  |      // Call implementation
  |      impl.createSubscr(...);
  | }
  |     
The EJB method createSubscr is marked (CMT) with a "Required" transaction 
attribute.
The KtfPerformerImpl.createSubscr method is marked "PROPAGATION_REQUIRED, 
-Exception" using an TransactionProxyFactoryBean.
In spring I'm using the JTA transaction manager as follows:

<bean id="txManager"
  | class="org.springframework.transaction.jta.JtaTransactionManager">
  |         <property name="transactionManagerName" 
value="java:/TransactionManager"/>
  |         <property name="userTransactionName" value="UserTransaction"/>
  | </bean>
  |     
So, having enabled the DEBUG logging level for 
"org.springframework.transaction", I can see (while debugging) after entering 
KtfPerformerImpl.createSubscr(...):
2007-08-24 15:59:36,146 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Using tran
  | saction object [EMAIL PROTECTED]
  | 2007-08-24 15:59:36,146 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Using tran
  | saction object [EMAIL PROTECTED]
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Participat
  | ing in existing transaction
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Participat
  | ing in existing transaction
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.support.TransactionSynchronizationMan
  | ager] Initializing transaction synchronization
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.support.TransactionSynchronizationMan
  | ager] Initializing transaction synchronization
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.interceptor.TransactionInterceptor] G
  | etting transaction for 
[com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.cre
  | ateSubscr]
  | 2007-08-24 15:59:39,646 DEBUG 
[org.springframework.transaction.interceptor.TransactionInterceptor] G
  | etting transaction for 
[com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.cre
  | ateSubscr]  
So far it's cool: KtfPerformerImpl.createSubscr(...) was enlisted in the 
transaction opened by EJB CMT. Then an application exception is raised in 
KtfPerformerImpl.createSubscr(...):
com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 2 
(not 0!) received!        
which SHOULD rollback the transaction, but look what I get in the log:
2007-08-24 16:00:34,396 ERROR [EzineSubscrSrv.SUBSCR_REG_ALG__KTF_PERF_IMPL] 
CREATE SUBSCR:  KTF request NOK after 2 tries => ABANDONING!
  | com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 
2 (not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.createSubscr(KtfPerform
  | erImpl.java:203)
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl$$FastClassByCGLIB$$1834
  | b76.invoke(<generated>)
  |     at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
  |     at 
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2Aop
  | Proxy.java:695)
  |     at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.
  | java:139)
  |     at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor
  | .java:107)
  |     at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.
  | java:161)
  |     at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopPr
  | oxy.java:630)
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl$$EnhancerByCGLIB$$aed74
  | 6d5.createSubscr(<generated>)
  |     at 
com.picsel.server.ezine.subscr.ejb.SubscrFacadeBean.createSubscr(SubscrFacadeBean.java:165)
  |     ...
  | 2007-08-24 16:00:35,021 WARN  
[EzineSubscrSrv.SUBSCR_REG_ALG__KTF_PERF_IMPL] CREATE SUBSCR: NOK: usi
  | ng reqData {msisdn=987656789, 
magId=98627ed10a03127f0047f959316507ea}!SUBSCR_EXTERNAL_CREATE_FAILED:
  |  com.picsel.server.ezine.subscr.exception.SubscriptionException: 
"ERROR_CODE 2 (not 0!) received!
  | 2007-08-24 16:00:35,990 DEBUG 
[org.springframework.transaction.interceptor.TransactionInterceptor] C
  | ompleting transaction for 
[com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.
  | createSubscr] after exception: 
com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 2 
(not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  | 2007-08-24 16:00:35,990 DEBUG 
[org.springframework.transaction.interceptor.TransactionInterceptor] C
  | ompleting transaction for 
[com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.
  | createSubscr] after exception: 
com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 2 
(not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  | 2007-08-24 16:00:35,990 DEBUG 
[org.springframework.transaction.interceptor.RuleBasedTransactionAttri
  | bute] Applying rules to determine whether transaction should rollback on 
com.picsel.server.ezine.sub
  | scr.exception.SubscriptionException: "ERROR_CODE 2 (not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  | 2007-08-24 16:00:35,990 DEBUG 
[org.springframework.transaction.interceptor.RuleBasedTransactionAttri
  | bute] Applying rules to determine whether transaction should rollback on 
com.picsel.server.ezine.sub
  | scr.exception.SubscriptionException: "ERROR_CODE 2 (not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.interceptor.RuleBasedTransactionAttri
  | bute] Winning rollback rule is: RollbackRuleAttribute with pattern 
[Exception]
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.interceptor.RuleBasedTransactionAttri
  | bute] Winning rollback rule is: RollbackRuleAttribute with pattern 
[Exception]
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Triggering
  |  beforeCompletion synchronization
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Triggering
  |  beforeCompletion synchronization
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Participat
  | ing transaction failed - marking existing transaction as rollback-only
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Participat
  | ing transaction failed - marking existing transaction as rollback-only
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Setting JT
  | A transaction rollback-only
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Setting JT
  | A transaction rollback-only
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Registerin
  | g after-completion synchronization with existing JTA transaction
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.jta.JtaTransactionManager] Registerin
  | g after-completion synchronization with existing JTA transaction
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.support.TransactionSynchronizationMan
  | ager] Clearing transaction synchronization
  | 2007-08-24 16:00:36,006 DEBUG 
[org.springframework.transaction.support.TransactionSynchronizationMan
  | ager] Clearing transaction synchronization
  | 2007-08-24 16:00:36,006 ERROR 
[org.springframework.transaction.interceptor.TransactionInterceptor] A
  | pplication exception overridden by rollback exception
  | com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 
2 (not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.createSubscr(KtfPerform
  | erImpl.java:203)
  |     ...
  | 2007-08-24 16:00:36,006 ERROR 
[org.springframework.transaction.interceptor.TransactionInterceptor] A
  | pplication exception overridden by rollback exception
  | com.picsel.server.ezine.subscr.exception.SubscriptionException: "ERROR_CODE 
2 (not 0!) received!
  |     ErrorCode=SUBSCR_EXTERNAL_CREATE_FAILED
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl.createSubscr(KtfPerform
  | erImpl.java:203)
  | 2007-08-24 16:00:36,006 ERROR [org.jboss.ejb.plugins.LogInterceptor] 
RuntimeException in method: pub
  | lic abstract com.picsel.server.ezine.subscr.dto.Subscription 
com.picsel.server.ezine.subscr.ejb.inte
  | 
rfaces.SubscrFacadeLocal.createSubscr(com.picsel.server.ezine.subscr.dto.ProviderAccountDto,java.uti
  | l.Map) throws 
com.picsel.server.ezine.subscr.exception.SubscriptionException:
  | org.springframework.transaction.NoTransactionException: No active JTA 
transaction
  |     at 
org.springframework.transaction.jta.JtaTransactionManager.registerAfterCompletionWithExistingTra
  | nsaction(JtaTransactionManager.java:903)
  |     at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletio
  | n(AbstractPlatformTransactionManager.java:885)
  |     at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(Abstr
  | actPlatformTransactionManager.java:782)
  |     at 
org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlat
  | formTransactionManager.java:730)
  |     at 
org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThr
  | owing(TransactionAspectSupport.java:332)
  |     at 
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor
  | .java:111)
  |     at 
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.
  | java:161)
  |     at 
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopPr
  | oxy.java:630)
  |     at 
com.picsel.server.ezine.subscr.domain.subscrregalg.impl.KtfPerformerImpl$$EnhancerByCGLIB$$aed74
  | 6d5.createSubscr(<generated>)
  |     at 
com.picsel.server.ezine.subscr.ejb.SubscrFacadeBean.createSubscr(SubscrFacadeBean.java:165)
  |     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  |     at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
  |     at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  |     at java.lang.reflect.Method.invoke(Method.java:585)
  |     at org.jboss.invocation.Invocation.performCall(Invocation.java:359)
  |     at 
org.jboss.ejb.StatelessSessionContainer$ContainerInterceptor.invoke(StatelessSessionContainer.ja
  | va:237)
  |     at 
org.jboss.resource.connectionmanager.CachedConnectionInterceptor.invoke(CachedConnectionIntercep
  | tor.java:158)
  |     at 
org.jboss.ejb.plugins.StatelessSessionInstanceInterceptor.invoke(StatelessSessionInstanceInterce
  | ptor.java:169)
  |     at 
org.jboss.ejb.plugins.CallValidationInterceptor.invoke(CallValidationInterceptor.java:63)
  |     at 
org.jboss.ejb.plugins.AbstractTxInterceptor.invokeNext(AbstractTxInterceptor.java:121)
  |     at 
org.jboss.ejb.plugins.TxInterceptorCMT.runWithTransactions(TxInterceptorCMT.java:350)
  |     at 
org.jboss.ejb.plugins.TxInterceptorCMT.invoke(TxInterceptorCMT.java:181)
  |     at 
org.jboss.ejb.plugins.SecurityInterceptor.invoke(SecurityInterceptor.java:168)
  |     at org.jboss.ejb.plugins.LogInterceptor.invoke(LogInterceptor.java:205)
  |     at 
org.jboss.ejb.plugins.ProxyFactoryFinderInterceptor.invoke(ProxyFactoryFinderInterceptor.java:13
  | 8)
  |     at 
org.jboss.ejb.SessionContainer.internalInvoke(SessionContainer.java:648)
  |     at org.jboss.ejb.Container.invoke(Container.java:960)
  |     at 
org.jboss.ejb.plugins.local.BaseLocalProxyFactory.invoke(BaseLocalProxyFactory.java:430)
  |     at 
org.jboss.ejb.plugins.local.StatelessSessionProxy.invoke(StatelessSessionProxy.java:103)
  |     at $Proxy263.createSubscr(Unknown Source)
  |     at 
com.picsel.server.ezine.subscr.web.servlet.CreateSubscrServlet.doPost(CreateSubscrServlet.java:1
  | 33)
  |     at 
com.picsel.server.ezine.subscr.web.servlet.CreateSubscrServlet.doGet(CreateSubscrServlet.java:70
  | )
  |     at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
  |     at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290
  | )
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |     at 
com.picsel.server.common.web.filter.RemoteIpAddrFilter.doFilter(RemoteIpAddrFilter.java:78)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235
  | )
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |     at 
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
  |     at 
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235
  | )
  |     at 
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
  |     at 
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
  |     at 
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
  |     at 
org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:179)
  | 
  |     at 
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
  |     at 
org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:84)
  |     at 
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
  |     at 
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
  |     at 
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:543)
  |     at 
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
  |     at 
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:241)
  |     at 
org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
  |     at 
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:580)
  | 
  |     at 
org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
  |     at java.lang.Thread.run(Thread.java:595)
  |     ...     
So the transaction is marked for rollback by spring, but afterwards an 
org.springframework.transaction.NoTransactionException is thrown, WHICH WAS NOT 
HAPPENING WHEN USING JBOSS 4.0.4. The result is that the application exception 
is overridden by the rollback exception.
Could somebody from JBOSS team help me with this, please.

View the original post : 
http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4082691#4082691

Reply to the post : 
http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4082691
_______________________________________________
jboss-user mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/jboss-user

Reply via email to