3.4.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate the implementations adhere to this model as long as their external behavior is consistent with the behavior that is described in this document.
Note that the abstract data model can be implemented in a variety of ways. This protocol does not prescribe or advocate any specific implementation technique.
The XA Resource Manager Bridge Facet MUST maintain all the data elements that are specified in section 3.1.1.
The XA Resource Manager Bridge Facet MUST also maintain the following data elements:
XA Resource Manager Durable Log: A durable list of XA Resource Manager objects. The contents of this log MUST persist across software restarts or transient failures.
XA Resource Manager Table: A table of all currently active XA Resource Manager objects.
XA Resource Manager Identifier Index: A monotonically increasing counter to provide Resource Manager Identifiers that are unique for the lifetime of an XA Resource Manager.
XaTmMinWarmRecoveryInterval: Specifies minimum time in seconds to wait between Recovery attempts. After each successive failure the wait will be doubled to a maximum of XaTmMaxWarmRecoveryInterval.
XaTmMaxWarmRecoveryInterval: Specifies maximum time in seconds to wait between Recovery attempts.
XA Resource Manager object: Represents a currently active XA Resource Manager. This extends the resource manager object defined in [MS-DTCO]:
When an XA Resource Manager object is stored in the XA Resource Manager Durable Log, the XA Resource Manager Bridge Facet MUST record only the following fields:
Resource Manager Global Identifier.
Data Source Name.
XA DLL Name.
This object MUST contain the following elements:
Resource Manager Global Identifier: Unique identifier associated with XA Resource Manager. Persists through failure and recovery.
Data Source Name: Implementation-specific ASCII string to be passed to xa_open and xa_close calls on the XA Switch.
XA Resource Manager Identifier: Integer identifier to be passed to XA calls. This identifier is unique for the lifetime of the XA Resource Manager instance.
State: Specifies the current state of XA Resource Manager object. This field MUST contain one of the following values:
Idle: This is the initial state.
Recovering: The Recovery processing is being carried out.
Active: The XA Resource Manager object has been registered.
Ended: The XA Resource Manager object has been unregistered.
XA Switch: Interface to XA Resource Manager. For a fuller definition, see [XOPEN-DTP] Chapter 5.
Recovery Interval: Specifies the interval for Recovery timer.
XA DLL Name: Specifies DLL Name used to look up XA Switch for XA Resource Manager.
Single Pipe: A flag used to indicate whether XA Resource is Single Pipe or Two Pipe.
XA Subordinate Enlistment Table: A table of currently existing XA Subordinate Enlistment objects in the XA Resource Manager object.
Call Count: Specifies number of calls made to register an XA Resource Manager object with a given Data Source Name.
Request Connections Table: A table containing the XA Resource Manager CMP Connection objects associated with the XA Resource Manager object.
Pending Open Connections Table: A Table containing the XA Resource Manager CMP Connection objects associated with registration requests received during recovery.
XA Subordinate Enlistment object: Represents a XA Subordinate Enlistment to an OleTx transaction. This extends the Enlistment object specified in [MS-DTCO]. This object MUST contain the following elements:
State: Specifies the current state of XA Subordinate Enlistment object. This field MUST contain one of the following values:
Idle: This is the initial state.
Enlisted: XA Subordinate Enlistment object is enlisted in a transaction object.
Prepared: State field of the Transaction object associated with the XA Subordinate Enlistment object is set to Prepared.
Ended: The processing for the XA Subordinate Enlistment object has been completed.
XID: Specifies the XA Transaction Identifier associated with the Enlistment.
Current Request Connection: Specifies the CMP Connection on which the Enlistment request was received.
XA Resource Manager: Specifies the reference to the XA Resource Manager object corresponding to the XA Subordinate Enlistment object.
Name: The resource manager identifier field of the Enlistment object, formatted as a string specified in [C706] Appendix A.
Identifier: An empty string.
XA Resource Manager CMP Connection object: CMP Connection associated with CONNTYPE_XATM_OPEN and CONNTYPE_XATM_OPENONEPIPE acceptors. The definition of an [MS-CMP] connection object is extended to include the following elements:
Reference to XA Resource Manager object
State: A state enumeration that represents the current state of the connection.
XA Subordinate Enlistment CMP Connection object: CMP Connection associated with CONNTYPE_XATM_ENLIST acceptor. The definition of an [MS-CMP] connection object is extended to include the following elements:
A reference to an XA Subordinate Enlistment object
State: A state enumeration that represents the current state of the connection
Transaction Manager Name: A Name object that identifies the transaction manager.