@Resource Injecting UserTransaction into CDI beans or EJBs injects the real ServerVMClientUserTransaction which is not serializable, which causes an exception if the EJB is passivated or the CDI bean in session scope and replicated. A work around is to use @Inject instead, which injects as serializable proxy.
I know the Narayana ones are serializable and referenceable: JTA: https://github.com/jbosstm/narayana/blob/master/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/UserTransactionImple.java JTS: https://github.com/jbosstm/narayana/blob/master/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/UserTransactionImple.java The app server integration side of things was done long ago - its possible their implementation is not up to date with applicable specs or there was a reason it was not made serializable. Mike perhaps you can take a look at https://github.com/jbosstm/jboss-transaction-spi/blob/master/src/main/java/org/jboss/tm/usertx/client/ServerVMClientUserTransaction.java and see what can be done. There are some comments from 2013 on there.
Given that it's a singleton, readResolve/writeReplace() could presumably be used to make Serializable work.
Retroactively bulk-closing issues from released EAP 6.4 cumulative patches.