I’m not sure I understand what Romain is saying so I will try to explain in my 
own words.

There are 2 things people generally mean when they talk about XA or two-phase 
transaction support.

1. One server with more than one transactional resource, typically databases 
and messaging.  A transaction is started on this one server, “inside” the 
transaction various DBs and messaging are accessed, and the transaction is 
ended.  The server “propagates” the transaction to the DBs etc and uses 2-phase 
commit to ensure consistent results across resources.  EJB servers have to 
support this (although they are not required to support automatic recovery from 
failure) and Tomee supports this.

2. More than one server, where a transaction is started on one server and a 
remote ejb call to another server requires propagating the transaction to that 
second server. Supporting this is optional, for good reason.  I have never 
encountered a situation with non-fossilized code where this is a remotely 
plausible architectural choice.  Put all the ejbs on the same server and run 
multiple copies of the same server.  Tomee does not support this.

Hope this reduces rather than adds to confusion :-)

David Jencks


> On Nov 19, 2017, at 6:13 AM, Romain Manni-Bucau <rmannibu...@gmail.com> wrote:
> 
> Le 19 nov. 2017 13:58, "Yann Blazart" <yann.blaz...@bycode.fr> a écrit :
> 
> Wait Romain.
> 
> You mean remote ejb TX do not work with tomee ???
> 
> 
> Not really, i meant with most servers "by design". Propagation is not
> supposed to be done through remote calls.
> 
> 
> That is a big problem
> 
> Le 19 nov. 2017 1:53 PM, "Thiago Rodrigues" <justoga...@gmail.com> a écrit :
> 
>> Hi
>> Thans for the quick response!
>> 
>> If i remove the MANDATORY from EJB2 everything works fine, but EJB2
> perform
>> inserts (with XA Oracle Datasource), but if an exception are thrown in
>> EJB1(after the EJB2 response) all the operations made in ejb1 are
>> rolledback but the data inserted by ejb2 are commited (probably because
>> there is no transaction propagation from ejb1 to ejb2 and a new
> transaction
>> are created). I made this work in other AS such wildlfy and wl... but i
>> would really like to made this work in tomee.
>> 
>> On Sun, Nov 19, 2017 at 10:33 AM, Romain Manni-Bucau <
>> rmannibu...@gmail.com>
>> wrote:
>> 
>>> Hi
>>> 
>>> Transactions are local until you use a XA system. EJB doesnt handle that
>> in
>>> tomee bit if the ejb2 call throws an exception and propagates it in ejb1
>>> then a rollback will be done in both systems.
>>> 
>>> 
>>> Le 19 nov. 2017 13:25, "Thiago Rodrigues" <justoga...@gmail.com> a
>> écrit :
>>> 
>>> 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.
>>> How to propagate transaction context to the remote server?
>>> 
>> 
>> 
>> 
>> --
>> Atenciosamente,
>> Thiago Rodrigues
>> thi...@dpaper.com.br
>> 

Reply via email to