<div dir="ltr">One option that I would favour is to go down the JTS route where the subordinate calls back on the parent to tell it to register it in the transaction. This could be a new JBoss Remoting API that I can invoke from Narayana. The call would not necessarily be a remote call, it would invoke back into the JBR transport to tell it that when it returns to the parent it needs to enlist (or not).</div><div class="gmail_extra"><br><div class="gmail_quote">On 29 January 2016 at 15:47, David M. Lloyd <span dir="ltr">&lt;<a href="mailto:david.lloyd@redhat.com" target="_blank">david.lloyd@redhat.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">As you may know, WildFly supports a feature wherein an EJB client which<br>
is invoking an EJB on a remote server has the option to propagate its<br>
local transaction to the remote server, treating the remote server as a<br>
subordinate and coordinating the transaction&#39;s two-phase commit among<br>
the resultant graph of servers.  This feature has always been limited in<br>
that, when enabled, transactions are always propagated, regardless of<br>
the peer EJB&#39;s transaction policy, or of whether the peer even has a<br>
transaction manager.<br>
<br>
So, for the invocation rework which I anticipate will be included in<br>
WildFly 11, I&#39;ve introduced a new client-side annotation intended to be<br>
associated with the EJB interface which informs the client library what<br>
to do for transaction propagation for that interface.  In addition, I<br>
intend to configuration strategies which will allow the default mode to<br>
be specified in various ways (per-thread, globally, and by target<br>
interface/method all come to mind), for cases where the EJB&#39;s remote<br>
interface cannot be easily modified for some reason.  I expect to also<br>
broaden these configuration strategies to apply to all client-side EJB<br>
interface/methods configuration items [3].<br>
<br>
The first part of this change is the addition of a new annotation called<br>
@ClientTransaction [1], which accepts as a value an enum called<br>
ClientTransactionPolicy [2].  The latter specifies whether a local<br>
transaction is required or forbidden for the method or interface, and<br>
also specifies whether the transaction is propagated or not propagated.<br>
<br>
I&#39;ve added copious amounts of JavaDoc in order to establish exactly what<br>
the behavior of each mode is, as well as to specify how each mode<br>
interacts with the various modules that are configured via the standard<br>
javax.ejb.TransactionAttributeType enum.<br>
<br>
[1]<br>
<a href="https://github.com/jbossas/jboss-ejb-client/blob/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransaction.java" rel="noreferrer" target="_blank">https://github.com/jbossas/jboss-ejb-client/blob/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransaction.java</a><br>
[2]<br>
<a href="https://github.com/jbossas/jboss-ejb-client/blob/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransactionPolicy.java" rel="noreferrer" target="_blank">https://github.com/jbossas/jboss-ejb-client/blob/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransactionPolicy.java</a><br>
[2] (raw)<br>
<a href="https://raw.githubusercontent.com/jbossas/jboss-ejb-client/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransactionPolicy.java" rel="noreferrer" target="_blank">https://raw.githubusercontent.com/jbossas/jboss-ejb-client/master/src/main/java/org/jboss/ejb/client/annotation/ClientTransactionPolicy.java</a><br>
[3] for a list, see:<br>
<a href="https://github.com/jbossas/jboss-ejb-client/tree/master/src/main/java/org/jboss/ejb/client/annotation" rel="noreferrer" target="_blank">https://github.com/jbossas/jboss-ejb-client/tree/master/src/main/java/org/jboss/ejb/client/annotation</a><br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
- DML<br>
_______________________________________________<br>
wildfly-dev mailing list<br>
<a href="mailto:wildfly-dev@lists.jboss.org">wildfly-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/wildfly-dev" rel="noreferrer" target="_blank">https://lists.jboss.org/mailman/listinfo/wildfly-dev</a><br>
</font></span></blockquote></div><br></div>