The EJB client/server protocol can perform many optimizations if a server can lazily import the transaction only if needed when an invocation arrives for processing.
Unfortunately our CMTTxInterceptor infrastructure is built around the assumption that the transaction (if any) will resumed on the calling thread, which prevents the EJB transport protocol from reporting back that the transaction was not used.
The CMTTxInterceptor and its subtypes must be modified to look for the transaction on the invocation object, rather than on the current thread. The local EJB invocation sources must suspend the transaction and install it on to the invocation context. CMTTxInterceptor would then assume that the current thread holds no transaction, resuming if necessary, instead of assuming that the current thread holds the inherited transaction and suspending if necessary.
Once this is complete, org.jboss.as.ejb3.remote.EJBRemoteTransactionPropagatingInterceptor can be completely removed from the container.