Summarizing XA calls
Here is a list of the calls that are made to the XA functions in a database client library as a result of the various MQI calls that control global units of work. This is not a complete description of the protocol described in the XA specification; it is provided as a brief overview.
Note that xa_start and xa_end calls are always called by IBM MQ code in the application process, whereas xa_prepare, xa_commit, and xa_rollback are always called from the queue manager agent process, amqzlaa0.
The xa_open and xa_close calls shown in this table are all made from the application process. The queue manager agent process calls xa_open in the circumstances described in Error conditions.
MQI call | XA calls made with dynamic registration | XA calls made without dynamic registration |
---|---|---|
First MQBEGIN |
xa_open |
xa_open xa_start |
Subsequent MQBEGIN | No XA calls |
xa_start |
MQCMIT ( without ax_reg being called during the current global unit of work) | No XA calls |
xa_end xa_prepare xa_commit xa_rollback |
MQCMIT ( with ax_reg being called during the current global unit of work) |
xa_end xa_prepare xa_commit xa_rollback |
Not applicable. No calls are made to ax_reg in non-dynamic mode. |
MQBACK ( without ax_reg being called during the current global unit of work) | No XA calls |
xa_end xa_rollback |
MQBACK ( with ax_reg being called during the current global unit of work) |
xa_end xa_rollback |
Not applicable. No calls are made to ax_reg in non-dynamic mode. |
MQDISC, where MQCMIT or MQBACK was called first. If they were not, MQCMIT processing is first done during MQDISC. |
xa_close |
xa_close |
- For MQCMIT, xa_commit is called if xa_prepare is successful. Otherwise, xa_rollback is called.
Parent topic: XA dynamic registration