[jboss-jira] [JBoss JIRA] (WFLY-7838) EJBClient user transaction is not propagated properly to the receiver

Mate Varga (JIRA) issues at jboss.org
Tue Dec 27 05:33:00 EST 2016


     [ https://issues.jboss.org/browse/WFLY-7838?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mate Varga closed WFLY-7838.
----------------------------
    Resolution: Won't Do


I have misunderstood how single-VM transaction management works.

> EJBClient user transaction is not propagated properly to the receiver
> ---------------------------------------------------------------------
>
>                 Key: WFLY-7838
>                 URL: https://issues.jboss.org/browse/WFLY-7838
>             Project: WildFly
>          Issue Type: Bug
>          Components: EJB
>    Affects Versions: 10.1.0.Final
>         Environment: not relevant
>            Reporter: Mate Varga
>         Attachments: wf-txn-fix.patch
>
>
> Setup:
> - WF 10.1.0.Final
> - two deployments, one EAR and one WAR
> - EAR exposes EJB methods (SFSBs and SLSBs)
> - WAR uses wildfly-ejb-client-bom 10.1.0 to call remote EJBs
> Problem:
> The client uses bean-managed transactions. The problem is that transactions are not propagated properly to the EJB side, therefore instead of using the existing BMT, container will use CMT. The flow in detail:
> - LocalEjbReceiver#processInvocation receives an EJBClientInvocationContext
> - EJBClientInvocationContext contains contextData, which was populated by the client. contextData correctly contains the appropriate UserTransactionId
> - processInvocation extracts the transaction Id and puts it into the interceptorContext's context data (NOT into privateData)
> - later in the interceptor chain, control reaches EJBRemoteTransactionPropagatingInterceptor, which is responsible for checking whether there is an user transaction present.
> - it tries to fetch the transaction ID from the interceptorContext's privateData (NOT from contextData)
> - it does not find the userTransaction there
> It looks to me that either EJBRemoteTransactionPropagatingInterceptor should look look for the userTransaction in contextData, or LocalEjbReceiver should put the userTransaction ID into privateData.
> I've attached a patch that fixes the problem for me.



--
This message was sent by Atlassian JIRA
(v7.2.3#72005)


More information about the jboss-jira mailing list