transactionallity is contextual so ensure you are in a transactional thread like replacing your own thread by an @Asynchronous method of an EJB
Romain Manni-Bucau @rmannibucau http://www.tomitribe.com http://rmannibucau.wordpress.com https://github.com/rmannibucau 2014-10-09 15:07 GMT+02:00 John D. Ament <[email protected]>: > Correct, you're using container managed transactions. You cannot call > commit. > > On Thu, Oct 9, 2014 at 8:58 AM, joeleclems <[email protected]> wrote: > >> i tried different kind of transaction within EJB. >> >> Here are results of my tests : >> >> 1. Inject a CMT EJB to receive message. >> >> My EJB : >> @Stateless >> @TransactionManagement(TransactionManagementType.CONTAINER) >> public class MyCMTEjbReceiver implements ICMTEjbReceiver, ExceptionListener >> { >> ... >> >> @Override >> @TransactionAttribute(TransactionAttributeType.REQUIRED) >> public void receiveMessage(int pType) { >> ... >> } >> >> When i call "session.commit()" in "receiveMessage" method, i have this >> exception : >> >> javax.jms.TransactionInProgressException: Cannot commit() if an XA >> transaction is already in progress >> at >> org.apache.activemq.TransactionContext.commit(TransactionContext.java:304) >> at >> >> org.apache.activemq.ra.ManagedTransactionContext.commit(ManagedTransactionContext.java:62) >> at >> org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:574) >> at >> >> org.apache.activemq.ra.ManagedSessionProxy.commit(ManagedSessionProxy.java:108) >> at >> >> org.apache.activemq.ActiveMQQueueSession.commit(ActiveMQQueueSession.java:72) >> at >> >> test_jms.receiver.MyCMTEjbReceiver.validateMessage(MyCMTEjbReceiver.java:192) >> at >> >> test_jms.receiver.MyCMTEjbReceiver.receiveMessage(MyCMTEjbReceiver.java:132) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92) >> at >> >> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308) >> at com.sun.proxy.$Proxy123.receiveMessage(Unknown Source) >> at >> >> test_jms.receiver.ServletControlReceiver.activateCMTEjbReceiver(ServletControlReceiver.java:69) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) >> at >> org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(ProxyEJB.java:74) >> at >> >> test_jms.receiver.ServletControlReceiver$$LocalBeanProxy.activateCMTEjbReceiver(test_jms/receiver/ServletControlReceiver.java) >> 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:597) >> at >> >> org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.performInvocation(OpenEJBEJBInvoker.java:89) >> at >> >> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) >> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:165) >> at >> >> org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(OpenEJBEJBInvoker.java:62) >> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:89) >> at >> >> org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:64) >> at >> >> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57) >> at >> >> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:93) >> at >> >> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) >> at >> >> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) >> at >> >> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:240) >> at >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:180) >> at >> org.apache.openejb.server.rest.RsServlet.service(RsServlet.java:53) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >> at >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >> at >> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44) >> at >> >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) >> at >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> at >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) >> at >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >> at >> >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) >> at >> >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >> at >> >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) >> at >> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) >> at >> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) >> at >> >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >> at java.lang.Thread.run(Thread.java:662) >> >> >> >> >> >> >> >> 2. Inject a BMT EJB to receive message (to follow this link : >> http://activemq.apache.org/should-i-use-xa.html) >> My EJB : >> @Stateless >> @TransactionManagement(TransactionManagementType.BEAN) >> public class MyEjbReceiver implements IEjbReceiver, ExceptionListener { >> >> @Resource >> private UserTransaction userTransaction; >> ... >> public void receiveMessage(int pType) { >> userTransaction.begin(); >> ... >> userTransaction.commit(); >> session.commit(); >> } >> >> ... >> } >> >> >> When i call "session.commit()" in "receiveMessage" method, i have this >> exception (again...) : >> javax.jms.IllegalStateException: Not a transacted session >> at >> org.apache.activemq.ActiveMQSession.commit(ActiveMQSession.java:569) >> at >> >> org.apache.activemq.ra.ManagedSessionProxy.commit(ManagedSessionProxy.java:108) >> at >> >> org.apache.activemq.ActiveMQQueueSession.commit(ActiveMQQueueSession.java:72) >> at >> test_jms.receiver.MyEjbReceiver.validateMessage(MyEjbReceiver.java:196) >> at >> test_jms.receiver.MyEjbReceiver.receiveMessage(MyEjbReceiver.java:135) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler.synchronizedBusinessMethod(EjbObjectProxyHandler.java:308) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:303) >> at >> >> org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:92) >> at >> >> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:308) >> at com.sun.proxy.$Proxy120.receiveMessage(Unknown Source) >> at >> >> test_jms.receiver.ServletControlReceiver.activateEjbReceiver(ServletControlReceiver.java:60) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.record(StatsInterceptor.java:181) >> at >> >> org.apache.openejb.monitoring.StatsInterceptor.invoke(StatsInterceptor.java:100) >> 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:597) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:192) >> at >> >> org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:173) >> at >> >> org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:85) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:227) >> at >> >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194) >> at >> org.apache.openejb.util.proxy.ProxyEJB$Handler.invoke(ProxyEJB.java:74) >> at >> >> test_jms.receiver.ServletControlReceiver$$LocalBeanProxy.activateEjbReceiver(test_jms/receiver/ServletControlReceiver.java) >> 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:597) >> at >> >> org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.performInvocation(OpenEJBEJBInvoker.java:89) >> at >> >> org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:96) >> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:165) >> at >> >> org.apache.openejb.server.cxf.rs.OpenEJBEJBInvoker.invoke(OpenEJBEJBInvoker.java:62) >> at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:89) >> at >> >> org.apache.openejb.server.cxf.rs.AutoJAXRSInvoker.invoke(AutoJAXRSInvoker.java:64) >> at >> >> org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:57) >> at >> >> org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:93) >> at >> >> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:263) >> at >> >> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121) >> at >> >> org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:240) >> at >> >> org.apache.openejb.server.cxf.rs.CxfRsHttpListener.onMessage(CxfRsHttpListener.java:180) >> at >> org.apache.openejb.server.rest.RsServlet.service(RsServlet.java:53) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:727) >> at >> >> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) >> at >> >> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) >> at >> >> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) >> at >> >> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) >> at >> org.apache.tomee.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44) >> at >> >> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501) >> at >> >> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) >> at >> >> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) >> at >> >> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) >> at >> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) >> at >> >> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) >> at >> >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) >> at >> >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) >> at >> >> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:895) >> at >> >> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:918) >> at >> >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) >> at java.lang.Thread.run(Thread.java:662) >> >> any clue? >> >> Here are updated source project : >> JmsTest3.zip >> <http://tomee-openejb.979440.n4.nabble.com/file/n4672193/JmsTest3.zip> >> >> Thanks >> Clément >> >> >> >> -- >> View this message in context: >> http://tomee-openejb.979440.n4.nabble.com/Activemq-embedded-createSession-unable-to-make-it-work-tp4672172p4672193.html >> Sent from the TomEE Users mailing list archive at Nabble.com. >>
