Platform SDK: Transaction Server |
Resource managers which are designed as client/server systems, will generally have the resource manager server on one node and the resource manager proxy on other nodes. If the application client begins the transaction and wants the resource manager to enlist in the transaction, then it will do so by invoking a function in the RM proxy (such as RM_Enlist) and providing it with the ITransaction which it wants the resource manager to enlist in.
If the transaction is begun on Node A, then before the resource manager on Node B can enlist in the transaction, the transaction needs to be propagated to the transaction coordinator on Node B. RM proxy needs to request MS DTC on its node to propagate the transaction to node B. Before making this request, it needs to know which MS DTC should the transaction be propagated to. To obtain this information, the RM proxy, sends a message to its resource manager asking for the whereabouts of the MS DTC which the resource manager is working with. The resource manager does the following steps to obtain the whereabouts:
After obtaining the whereabouts BLOB, the resource manager sends it to the RM proxy. RM proxy after receiving the whereabouts BLOB does the following steps to obtain an ITransactionExport interface.
Note Even in cases where the RM proxy might be on the same node as the resource manager, the steps for obtaining the whereabouts and propagating the transaction need to be performed.