When it comes to global transactions across a distributed system, there are various components involved. There is an application component where a transaction actually begins, a resource manager that manages all the resources that take part in the transaction (for example, the database), and finally, a transaction manager that establishes and maintains transactions. Following are the detailed responsibilities of each of these components: Application program This client program has the business logic and actually implements the transaction-processing code. A transaction is created here and then managed with the help of the transaction manager and the resource manager. Resource manager It manages the resources (like a database) taking part in a transaction. Basically, it provides a wrapper layer for a storage system. In this way it manages all the resources and translates all the transaction-related activities to storage level operations. Since a resource manager keeps track of all the resources, it is responsible for registering these resources in the transaction manager. Transaction manager This is the core component in transaction processing and it is responsible for managing the entire transaction. It decides which resources should participate in a transaction based on a list which is provided by the resource manager. The transaction manager coordinates with the resource manager for data recovery procedures and two-phase commits (coordinating a single transaction across two or more registered resources). There are many transaction processing models based on these components. A few of them are listed here: X/Open Distributed Transaction Processing Model The X/Open Distributed Transaction Processing (DTP) model is one of the first models for defining transaction-processing support. The X/Open DTP model has its roots in the UNIX world. The X/Open DTP model provides transaction processing-support for applications to interact with transaction-processing monitors. OMG Object Transaction Service The Object Management Group (OMG) defines the Object Transaction Service (OTS) to provide distributed transaction support for CORBA objects. MTS (Microsoft Transaction Server) Microsoft Transaction Server is the transaction service provided in Windows NT. MTS provides transactional support for applications deployed on the Windows NT platform. JTA and JTS The J2EE specification defines two models to enable J2EE applications to utilize distributed transactions: Java Transaction API (JTA) and Java Transaction Service (JTS). The Java Transaction Service is a Java implementation of OMG's Object Transaction Service. Hence, JTS is considered too elaborate to be used by developers. To enable developers to easily use distributed transactions, the Java Transaction API has been defined. JTA provides simple, easy-to-use APIs that can be embedded in Java applications to make them transaction aware. |