Hi, I am testing remote server Transaction Context Propagation.

My application is like that and Tomee server version is 1.7.1

                               call
Server A (EJB 1) ========> Server B (EJB 2)
           |                      |
           |                      |
           |                      |
          DB 1                   DB 2

EJB 1 is CMT and
@TransactionAttribute(TransactionAttributeType.REQUIRES_NEW)
EJB 2 is CMT and @TransactionAttribute(TransactionAttributeType.MANDATORY)

I want to execute EJB 1 which works with DB1, then calls EJB 2 which works
with DB2
in a single global transaction.

when EJB 1 calls EJB 2 in  remote server, It throws
TransactionRequiredLocalException Exception.
Isn't it possible to propagate transaction context to remote server?
I just found many questions like me, but the answer was not clear.

I appreciate if I have the exact answer and if possible, how can I make a
success?
thank you.

FYI, Exceptin stack trace is like that
javax.ejb.TransactionRequiredLocalException
        at
org.apache.openejb.client.EJBInvocationHandler.convertException(EJBInvocationHandler.java:236)
        at
org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:214)
        at
org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:136)
        at
org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49)
        at com.sun.proxy.$Proxy73.insertData(Unknown Source)
        at
test.DataSourceTestSessionBeanCmt.insertRemoteEjbData(DataSourceTestSessionBeanCmt.java:143)
        at
test.DataSourceTestSessionBeanCmt.insertData(DataSourceTestSessionBeanCmt.java:112)
        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
test.DataSourceTestSessionBeanCmt$$LocalBeanProxy.insertData(test/DataSourceTestSessionBeanCmt.java)
        at test.EjbCallServlet.doGet(EjbCallServlet.java:35)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
        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 argo.enterprise.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:314)
        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)
Caused by: javax.transaction.TransactionRequiredException
        at
org.apache.openejb.core.transaction.TxMandatory.<init>(TxMandatory.java:50)
        at
org.apache.openejb.core.transaction.JtaTransactionPolicyFactory.createTransactionPolicy(JtaTransactionPolicyFactory.java:46)
        at
org.apache.openejb.core.transaction.EjbTransactionUtil.createTransactionPolicy(EjbTransactionUtil.java:58)
        at
org.apache.openejb.core.stateless.StatelessContainer._invoke(StatelessContainer.java:216)
        at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:194)
        at
org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:370)
        at
org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:181)
        at
org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:344)
        at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:240)
        at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:86)
        at
org.apache.openejb.server.httpd.ServerServlet.service(ServerServlet.java:58)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:731)
        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 argo.enterprise.catalina.OpenEJBValve.invoke(OpenEJBValve.java:44)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
        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:423)
        at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
        at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)
        at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
        ... 4 more




--
View this message in context: 
http://tomee-openejb.979440.n4.nabble.com/Remote-server-Transaction-Context-Propagation-tp4675825.html
Sent from the TomEE Users mailing list archive at Nabble.com.

Reply via email to