1.3.3.2 Resource Manager Role
The resource manager role is generally performed by software programs that manage transactional resources. Databases and queues are the most common examples of such programs.
This protocol supports three types of enlistments: Phase Zero enlistments, Phase One enlistments, and voter enlistments. These enlistment types correspond to three common categories of resource managers:
Caching resource managers appear like a durable resource manager to an application, but they actually delegate their durable state changes to another resource manager that provides true durability. Caching resource managers typically use Phase Zero enlistments.
Durable resource managers manage access to durable resources. They are expected to support recovery. Durable resource managers typically use Phase One enlistments.
Volatile resource managers manage access to volatile resources whose state does not persist beyond the lifetime of the resource manager process. Volatile resource managers typically use voter enlistments.
The resource manager role is typically responsible for the following tasks:
Providing applications with access to data in a transactional manner. This function is specific to the implementation of a resource manager.
Registering with a transaction manager and performing recovery operations for all In Doubt transactions.
Enlisting for various two-phase Commit notifications.
Voting on transaction outcomes in accord with the implementation-specific policies of the resource manager.
In general, the motivations behind these tasks are application-specific. The specific protocol mechanisms by which these tasks are accomplished are discussed in sections 2 and 3.