¿Cómo hacer Transacciones Distribuidas XA en Spring y GlassFish 5?

Hola.

Estoy tratando de hacer una transacción distribuida entre dos servicios web REST, cuya fuente de datos apuntan a la misma base de datos. El primer servicio se denomina 1, que llama con RestTemplate al servicio web denominado 2.

Para el uso de las transacciones distribuidas voy a utilizar un pool de conexiones con JNDI, MySql (con el controlador de conexión 5.1.35), JTA, XA, Spring y el servidor de aplicaciones GlassFish 5.

Ahora, ya he descargado las dependencias de maven en el proyecto de spring, monté el JtaTransactionManager en una clase de configuración y escribí las propiedades de la fuente de datos y el estado de JTA en el archivo application.yml, como en el código siguiente, respectivamente en los dos servicios web ' y 2'):

Clase de configuración:

 

archivo application.yml:

 

También he instalado el JNDI en GlassFish 5, que ha sido creado como un "Recurso JDBC" llamado jdbc / Prueba en un "Pool de Conexiones" de tipo javax.sql.XADataSource y llamado pruebaXA:

https://i.stack.imgur.com/JU2ls.png

En la capa de control del servicio web 1, llama al servicio 2 con la clase RestTemplate de Spring Framework:

servicio 1

 

servicio 2

 

Si los dos servicios funcionan bien entonces no hay problema, sin embargo, cuando el servicio 1 cae, el servicio 2 no sabe sobre el error y no hace la reversión.

No sé si necesito instalar otra característica en GlassFish 5, o en el programa de Spring.

He leído que en primavera solo es necesario crear el JtaTransactionManager y Spring hará el trabajo relacionado con JTA. https://spring.io/blog/2011/08/15/configuring-spring-and-jta-without-full-java-ee/

Gracias por su ayuda y tiempo.