Transacciones de confirmación en dos fases

Las transacciones de confirmación en dos fases (XA) no están habilitadas en Liberty en plataformas en la nube. De forma predeterminada, el gestor de transacciones de Liberty escribe el archivo de registro de transacciones en el sistema de archivos local. Debido a que el sistema de archivos local es efímero en plataformas en la nube, el archivo de registro de transacciones no está disponible cuando una aplicación o la máquina virtual Java se detiene de forma anómala. Aunque el gestor de transacciones se puede configurar para utilizar un servicio de base de datos donde almacenar los archivos de registro de transacciones, las plataformas en la nube crean automáticamente una instancia completamente nueva de la aplicación después de una detención anómala. Como resultado, el gestor de transacciones no puede determinar qué archivo de registro determinado debe utilizar para recuperar las transacciones de la instancia fallida.

De forma predeterminada, los beans Enterprise JavaBeans (EJB) están gestionados por contenedor y tienen un atributo de transacción Required, lo que significa que utilizan transacciones JTA. Las transacciones JTA que abarcan un solo recurso están totalmente soportadas. Las transacciones JTA que abarcan varios recursos necesitan la confirmación en dos fases, que no está soportada. Esta regla señala archivos ejb-jar.xml y código Java que tiene referencias al paquete javax.ejb. Esta regla también marca el código Java que tiene referencias a la clase javax.transacción.UserTransaction. Compruebe si la aplicación utiliza transacciones XA y elimine las transacciones XA si están presentes.

En código Java, las siguientes anotaciones explícitas indican el uso de transacciones JTA:

En el archivo ejb-jar.xml, los siguientes elementos explícita indican el uso de transacciones JTA:

Nota: Si su aplicación no utiliza la clase javax.transacción.UserTransaction y todos los beans EJB de su aplicación son gestionados por bean, o por contenedor con los atributos de transacción "Never" o "NotSupported", entonces su aplicación no utiliza transacciones XA y se puede ignorar el marcado de esta regla.

Los siguientes elementos o anotaciones explícitas indican que un bean EJB no está utilizando transacciones XA: