Lightweigth Client

As mentioned before, transaction coordination comes at a significant cost. Driving the 2PC by issuing the callbacks for registered Resource and Synchronization objects may sum up to several remote method invocations. Additionally, and probably even more significant, a transaction coordinator must log the outcome of the 2PC to stable storage.
Now assume a lightweight client which calls recoverable servers on behalf of transactions, started and ended by the client. With "lightweight client", we mean programs that run on unmanaged desktop systems. Such a machine may show only temporarily availability; questionable IO performance and reliability of storage subsystems. These single-user, unmanaged desktop systems should not be required to perform network functions like transaction coordination or critical log IO to stable storage.
The xots allows lightweight clients to delegate transaction creation, management and commit processing. xots therefore provides the TXsvc daemon. Delegation of tx coordination means that the TXsvc allows lightweight clients to begin and terminate transactions while the responsibility for transaction coordination is delegated to the transaction manager implemented by the TXsvc, running on a server machine. You can have as many TXsvc daemons as you want and where you want. The diagram shows this setting.

 
 

The lightweight client still must link against the xots lib, which takes care of context propagation and provide the Current for controlling the transaction. The transaction Coordinator, Terminator are realized in the TXsvc, thus other recoverable servers will register with the TXsvc and receive its 2PC callbacks directly from TXsvc.