Can't find resource for bundle java.util.PropertyResourceBundle, key com.arjuna.ats.internal.jta.transaction.arjunacore.syncrollbackmexception
tmuldo Apr 12, 2011 5:23 PMI've recently upgraded to JBoss AS 5.1 and I'm running into a problem when my code throws a runtime exception from within a transaction. Apparently, there's a bug that crept into AS 5.1 (in the arjuna source code regarding the spelling of "syncrollbackmexception"). Here's the full stack trace...
{font:courier new}
exception: java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key com.arjuna.a
ts.internal.jta.transaction.arjunacore.syncrollbackmexception
at java.util.ResourceBundle.getObject(ResourceBundle.java:374)
at java.util.ResourceBundle.getString(ResourceBundle.java:334)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple.registerInterposedSynchronizat
ion(TransactionSynchronizationRegistryImple.java:145)
at org.springframework.transaction.jta.JtaTransactionManager$InterposedSynchronizationDelegate.registerInterposedSynchroniza
tion(JtaTransactionManager.java:1210)
at org.springframework.transaction.jta.JtaTransactionManager.doRegisterAfterCompletionWithJtaTransaction(JtaTransactionManag
er.java:1148)
at org.springframework.transaction.jta.JtaTransactionManager.registerAfterCompletionWithExistingTransaction(JtaTransactionMa
nager.java:1098)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransac
tionManager.java:932)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionMan
ager.java:829)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.ja
va:777)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSu
pport.java:339)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at com.firstbest.underwriting.form.FieldServiceImpl$$EnhancerByCGLIB$$f731c32.createFieldByFormId(<generated>)
at com.firstbest.underwriting.form.FieldAssembler.createItem(FieldAssembler.java:93)
at flex.data.adapters.JavaAdapter.doCreateItem(JavaAdapter.java:1829)
at flex.data.adapters.JavaAdapter.invokeAssemblerSync(JavaAdapter.java:1698)
at flex.data.adapters.JavaAdapter.invokeBatchOperation(JavaAdapter.java:1562)
at flex.data.adapters.JavaAdapter.invoke(JavaAdapter.java:636)
at com.firstbest.flex.NewDataServiceJavaAdapter.invokeSuper(NewDataServiceJavaAdapter.java:34)
at com.firstbest.flex.NewDataServiceJavaAdapter.invoke(NewDataServiceJavaAdapter.java:84)
at flex.messaging.services.MessageService.serviceMessage(MessageService.java:276)
at flex.data.DataService.sendBatchToAdapter(DataService.java:1414)
at flex.data.DataService.serviceTransactedMessage(DataService.java:787)
at flex.data.DataService.serviceMessage(DataService.java:465)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint.serviceMessageInternal(RTMPEndpoint.java:76)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint$1.doServiceMessage(RTMPEndpoint.java:39)
at com.firstbest.flex.messaging.endpoints.EndpointTemplate.invokeService(EndpointTemplate.java:144)
at com.firstbest.flex.messaging.endpoints.EndpointTemplate.serviceMessage(EndpointTemplate.java:109)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint.serviceMessage(RTMPEndpoint.java:37)
at flex.messaging.endpoints.RTMPConnection.handleTCCommand(RTMPConnection.java:722)
at flex.messaging.endpoints.RTMPConnection.serviceTCMessage(RTMPConnection.java:1032)
at flex.messaging.endpoints.RTMPConnection.doRead(RTMPConnection.java:510)
at flex.messaging.endpoints.RTMPProtocolHandler.doRead(RTMPProtocolHandler.java:123)
at flex.messaging.socketserver.Connection$ConnectionReader.run(Connection.java:791)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:662)
{font}
After setting a breakpoint and after correcting the misspelling, I'm now getting the following error...
{font:courier new}
Exception: java.lang.RuntimeException: [com.arjuna.ats.internal.jta.transaction.arjunacore.syncrollbackexception] [com.arjuna.ats.
internal.jta.transaction.arjunacore.syncrollbackexception] The transaction implementation threw a RollbackException
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple.registerInterposedSynchronizat
ion(TransactionSynchronizationRegistryImple.java:145)
at org.springframework.transaction.jta.JtaTransactionManager$InterposedSynchronizationDelegate.registerInterposedSynchroniza
tion(JtaTransactionManager.java:1210)
at org.springframework.transaction.jta.JtaTransactionManager.doRegisterAfterCompletionWithJtaTransaction(JtaTransactionManag
er.java:1148)
at org.springframework.transaction.jta.JtaTransactionManager.registerAfterCompletionWithExistingTransaction(JtaTransactionMa
nager.java:1098)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransac
tionManager.java:932)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.processRollback(AbstractPlatformTransactionMan
ager.java:829)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.rollback(AbstractPlatformTransactionManager.ja
va:777)
at org.springframework.transaction.interceptor.TransactionAspectSupport.completeTransactionAfterThrowing(TransactionAspectSu
pport.java:339)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
at com.firstbest.underwriting.form.FieldServiceImpl$$EnhancerByCGLIB$$f731c32.updateById(<generated>)
at com.firstbest.underwriting.form.FieldAssembler.updateItem(FieldAssembler.java:131)
at flex.data.adapters.JavaAdapter.doUpdateItem(JavaAdapter.java:1909)
at flex.data.adapters.JavaAdapter.invokeAssemblerSync(JavaAdapter.java:1701)
at flex.data.adapters.JavaAdapter.invokeBatchOperation(JavaAdapter.java:1562)
at flex.data.adapters.JavaAdapter.invoke(JavaAdapter.java:636)
at com.firstbest.flex.NewDataServiceJavaAdapter.invokeSuper(NewDataServiceJavaAdapter.java:34)
at com.firstbest.flex.NewDataServiceJavaAdapter.invoke(NewDataServiceJavaAdapter.java:84)
at flex.messaging.services.MessageService.serviceMessage(MessageService.java:276)
at flex.data.DataService.sendBatchToAdapter(DataService.java:1414)
at flex.data.DataService.serviceTransactedMessage(DataService.java:787)
at flex.data.DataService.serviceMessage(DataService.java:465)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1503)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:884)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint.serviceMessageInternal(RTMPEndpoint.java:76)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint$1.doServiceMessage(RTMPEndpoint.java:39)
at com.firstbest.flex.messaging.endpoints.EndpointTemplate.invokeService(EndpointTemplate.java:144)
at com.firstbest.flex.messaging.endpoints.EndpointTemplate.serviceMessage(EndpointTemplate.java:109)
at com.firstbest.flex.messaging.endpoints.RTMPEndpoint.serviceMessage(RTMPEndpoint.java:37)
at flex.messaging.endpoints.RTMPConnection.handleTCCommand(RTMPConnection.java:722)
at flex.messaging.endpoints.RTMPConnection.serviceTCMessage(RTMPConnection.java:1032)
at flex.messaging.endpoints.RTMPConnection.doRead(RTMPConnection.java:510)
at flex.messaging.endpoints.RTMPProtocolHandler.doRead(RTMPProtocolHandler.java:123)
at flex.messaging.socketserver.Connection$ConnectionReader.run(Connection.java:791)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
at java.lang.Thread.run(Thread.java:662)
Caused by: javax.transaction.RollbackException: [com.arjuna.ats.internal.jta.transaction.arjunacore.syncwhenaborted] [com.arjuna.ats
.internal.jta.transaction.arjunacore.syncwhenaborted] Can't register synchronization because the transaction is in aborted state
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.registerSynchronizationImple(TransactionImple.java:47
6)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple.registerInterposedSynchronizat
ion(TransactionSynchronizationRegistryImple.java:141)
... 39 more
{font}
With that said, the question arises why am I running into this issue now with AS 5.1 when I did not run into it with AS 4.2.3?