╨╧рб▒с > ■
И Л ■ ~ А Б В Г Д Е Ж З ье┴ aр °┐ Ў\ bjbjЪ═Ъ═ чl °зI\°зI\) Ў ╖ ▐П ▐П VЭ VЭ VЭ VЭ VЭ D ЪЭ ЪЭ ЪЭ А Ю б < ЪЭ xr ╥ Zж ж- ╘ @ @╘ @╘ @╘ И╒ Р# ∙ T l , n n n n n n n $ Ju ╢ x * 9n ∙ VЭ Ш И╒ И╒ Ш Ш 9n VЭ VЭ @╘ @╘ H 2r @ @ @ Ш R VЭ @╘ VЭ @╘ n @ Ш n @ @ . aP Ф iX @╘ @5Юkw╠╤ ъ . їQ m Hr 0 xr T T *x ( *x А uX ГX *x VЭ ЧX h Ш Ш @ Ш Ш Ш Ш Ш 9n 9n @ Ш Ш Ш xr Ш Ш Ш Ш *x Ш Ш Ш Ш Ш Ш Ш Ш Ш ▐П > Ь : [MS-WSRVCAT]: WS-AtomicTransaction (WS-AT)Version 1.0 Protocol Extensions
Intellectual Property Rights Notice for Open Specifications Documentation
Technical Documentation. Microsoft publishes Open Specifications documentation for protocols, file formats, languages, standards as well as overviews of the interaction among each of these technologies.
Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you may make copies of it in order to develop implementations of the technologies described in the Open Specifications and may distribute portions of it in your implementations using these technologies or your documentation as necessary to properly document the implementation. You may also distribute in your implementation, with or without modification, any schema, IDLТs, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications.
No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
Patents. Microsoft has patents that may cover your implementations of the technologies described in the Open Specifications. Neither this notice nor Microsoft's delivery of the documentation grants any licenses under those or any other Microsoft patents. However, a given Open Specification may be covered by Microsoft HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=214445" Open Specification Promise or the HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=214448" Community Promise. If you would prefer a written license, or if the technologies described in the Open Specifications are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting HYPERLINK "mailto:iplg@microsoft.com" iplg@microsoft.com.
Trademarks. The names of companies and products contained in this documentation may be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit HYPERLINK "http://www.microsoft.com/trademarks" www.microsoft.com/trademarks.
Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.
Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than specifically described above, whether by implication, estoppel, or otherwise.
Tools. The Open Specifications do not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments you are free to take advantage of them. Certain Open Specifications are intended for use in conjunction with publicly available standard specifications and network programming art, and assumes that the reader either is familiar with the aforementioned material or has immediate access to it.
Revision Summary
DateRevision HistoryRevision ClassComments04/08/20080.1 Initial Availability06/20/20080.2MinorUpdated the technical content.07/25/20080.2.1EditorialRevised and edited the technical content.08/29/20080.3MinorUpdated the technical content.10/24/20080.3.1EditorialRevised and edited the technical content.12/05/20080.3.2EditorialRevised and edited the technical content.01/16/20090.3.3EditorialRevised and edited the technical content.02/27/20090.3.4EditorialRevised and edited the technical content.04/10/20090.3.5EditorialRevised and edited the technical content.05/22/20090.3.6EditorialRevised and edited the technical content.07/02/20090.3.7EditorialRevised and edited the technical content.08/14/20090.3.8EditorialRevised and edited the technical content.09/25/20090.4MinorUpdated the technical content.11/06/20090.4.1EditorialRevised and edited the technical content.12/18/20090.4.2EditorialRevised and edited the technical content.01/29/20101.0MajorUpdated and revised the technical content.03/12/20102.0MajorUpdated and revised the technical content.04/23/20102.0.1EditorialRevised and edited the technical content.06/04/20102.0.2EditorialRevised and edited the technical content.07/16/20103.0MajorSignificantly changed the technical content.08/27/20103.0No changeNo changes to the meaning, language, or formatting of the technical content.10/08/20103.0No changeNo changes to the meaning, language, or formatting of the technical content.11/19/20104.0MajorSignificantly changed the technical content.01/07/20114.0No changeNo changes to the meaning, language, or formatting of the technical content.02/11/20114.0No changeNo changes to the meaning, language, or formatting of the technical content.03/25/20114.0No changeNo changes to the meaning, language, or formatting of the technical content.05/06/20114.0No changeNo changes to the meaning, language, or formatting of the technical content.06/17/20114.1MinorClarified the meaning of the technical content.09/23/20114.1No changeNo changes to the meaning, language, or formatting of the technical content.12/16/20115.0MajorSignificantly changed the technical content.03/30/20125.0No changeNo changes to the meaning, language, or formatting of the technical content.07/12/20125.0No changeNo changes to the meaning, language, or formatting of the technical content.10/25/20125.0No changeNo changes to the meaning, language, or formatting of the technical content.01/31/20135.0No changeNo changes to the meaning, language, or formatting of the technical content.08/08/20135.1MinorClarified the meaning of the technical content.
Contents
TOC \f \h \t "DSTOC1-1,1,DSTOC1-2,2,DSTOC1-3,3,DSTOC1-4,4,DSTOC1-5,5,DSTOC1-6,6,DSTOC1-7,7,DSTOC1-8,8,DSTOC1-9,9,DSTOC2-2,2,DSTOC2-3,3,DSTOC2-4,4,DSTOC2-5,5,DSTOC2-6,6,DSTOC2-7,7,DSTOC2-8,8,DSTOC2-9,9,DSTOC3-3,3,DSTOC3-4,4,DSTOC3-5,5,DSTOC3-6,6,DSTOC3-7,7,DST HYPERLINK \l "_Toc362246542" 1 Introduction PAGEREF _Toc362246542 \h 7
HYPERLINK \l "_Toc362246543" 1.1 Glossary PAGEREF _Toc362246543 \h 7
HYPERLINK \l "_Toc362246544" 1.2 References PAGEREF _Toc362246544 \h 8
HYPERLINK \l "_Toc362246545" 1.2.1 Normative References PAGEREF _Toc362246545 \h 8
HYPERLINK \l "_Toc362246546" 1.2.2 Informative References PAGEREF _Toc362246546 \h 9
HYPERLINK \l "_Toc362246547" 1.3 Overview PAGEREF _Toc362246547 \h 9
HYPERLINK \l "_Toc362246548" 1.3.1 Scenario 1: Flowing a Transaction from an Initiator to a Server Application PAGEREF _Toc362246548 \h 10
HYPERLINK \l "_Toc362246549" 1.3.2 Scenario 2: Flowing a Transaction from a Client Application to a Participant PAGEREF _Toc362246549 \h 11
HYPERLINK \l "_Toc362246550" 1.3.2.1 Scenario 2a: Flowing a WS-AtomicTransaction CoordinationContext from a Client Application to a Participant PAGEREF _Toc362246550 \h 11
HYPERLINK \l "_Toc362246551" 1.3.2.2 Scenario 2b: Flowing a Transaction from a Client Application to a Participant Using WS-AtomicTransaction PAGEREF _Toc362246551 \h 12
HYPERLINK \l "_Toc362246552" 1.3.3 Scenario 3: Flowing a Transaction from Client Application to a Server Application PAGEREF _Toc362246552 \h 13
HYPERLINK \l "_Toc362246553" 1.3.3.1 Scenario 3a: Server Application Uses Pull Propagation PAGEREF _Toc362246553 \h 13
HYPERLINK \l "_Toc362246554" 1.3.3.2 Scenario 3b: Server Application Requests Activation Using an Existing CoordinationContext PAGEREF _Toc362246554 \h 14
HYPERLINK \l "_Toc362246555" 1.4 Relationship to Other Protocols PAGEREF _Toc362246555 \h 14
HYPERLINK \l "_Toc362246556" 1.5 Prerequisites/Preconditions PAGEREF _Toc362246556 \h 15
HYPERLINK \l "_Toc362246557" 1.6 Applicability Statement PAGEREF _Toc362246557 \h 15
HYPERLINK \l "_Toc362246558" 1.7 Versioning and Capability Negotiation PAGEREF _Toc362246558 \h 15
HYPERLINK \l "_Toc362246559" 1.8 Vendor-Extensible Fields PAGEREF _Toc362246559 \h 15
HYPERLINK \l "_Toc362246560" 1.9 Standards Assignments PAGEREF _Toc362246560 \h 15
HYPERLINK \l "_Toc362246561" 2 Messages PAGEREF _Toc362246561 \h 16
HYPERLINK \l "_Toc362246562" 2.1 Transport PAGEREF _Toc362246562 \h 16
HYPERLINK \l "_Toc362246563" 2.2 Message Syntax PAGEREF _Toc362246563 \h 16
HYPERLINK \l "_Toc362246564" 2.2.1 Protocol Versioning PAGEREF _Toc362246564 \h 16
HYPERLINK \l "_Toc362246565" 2.2.2 Data Types Used When Discovering Coordinator Activation and Registration Service URIs PAGEREF _Toc362246565 \h 16
HYPERLINK \l "_Toc362246566" 2.2.2.1 Enumerations PAGEREF _Toc362246566 \h 17
HYPERLINK \l "_Toc362246567" 2.2.2.1.1 ControlProtocol PAGEREF _Toc362246567 \h 17
HYPERLINK \l "_Toc362246568" 2.2.2.1.2 IsolationLevel PAGEREF _Toc362246568 \h 17
HYPERLINK \l "_Toc362246569" 2.2.2.2 Structures PAGEREF _Toc362246569 \h 18
HYPERLINK \l "_Toc362246570" 2.2.2.2.1 ProtocolInformationFlags PAGEREF _Toc362246570 \h 18
HYPERLINK \l "_Toc362246571" 2.2.2.2.2 SupportedProtocolsFlags PAGEREF _Toc362246571 \h 18
HYPERLINK \l "_Toc362246572" 2.2.2.2.3 VariableCharArray PAGEREF _Toc362246572 \h 19
HYPERLINK \l "_Toc362246573" 2.2.2.2.4 WSAT_ProtocolGuid PAGEREF _Toc362246573 \h 20
HYPERLINK \l "_Toc362246574" 2.2.2.2.5 ExtendedWhereabouts PAGEREF _Toc362246574 \h 20
HYPERLINK \l "_Toc362246575" 2.2.2.3 Coordinator Activation Service URIs PAGEREF _Toc362246575 \h 22
HYPERLINK \l "_Toc362246576" 2.2.2.3.1 HTTPS Activation Service Version 1.0 X.509 URI PAGEREF _Toc362246576 \h 22
HYPERLINK \l "_Toc362246577" 2.2.2.3.2 HTTPS Activation Service Version 1.1 X.509 URI PAGEREF _Toc362246577 \h 22
HYPERLINK \l "_Toc362246578" 2.2.2.3.3 HTTPS Activation Service Version 1.0 SPNEGO URI PAGEREF _Toc362246578 \h 23
HYPERLINK \l "_Toc362246579" 2.2.2.3.4 HTTPS Activation Service Version 1.1 SPNEGO URI PAGEREF _Toc362246579 \h 23
HYPERLINK \l "_Toc362246580" 2.2.2.4 Coordinator Registration Service URIs PAGEREF _Toc362246580 \h 24
HYPERLINK \l "_Toc362246581" 2.2.2.4.1 HTTPS Registration Service Version 1.0 X.509 URI PAGEREF _Toc362246581 \h 24
HYPERLINK \l "_Toc362246582" 2.2.2.4.2 HTTPS Registration Service Version 1.1 X.509 URI PAGEREF _Toc362246582 \h 24
HYPERLINK \l "_Toc362246583" 2.2.3 Data Types Used to Extend WS-AtomicTransaction PAGEREF _Toc362246583 \h 24
HYPERLINK \l "_Toc362246584" 2.2.3.1 Common Data Types PAGEREF _Toc362246584 \h 25
HYPERLINK \l "_Toc362246585" 2.2.3.1.1 GuidStringType Complex Type PAGEREF _Toc362246585 \h 25
HYPERLINK \l "_Toc362246586" 2.2.3.1.2 UrnUuidStringType Complex Type PAGEREF _Toc362246586 \h 25
HYPERLINK \l "_Toc362246587" 2.2.3.1.3 Enlistment Element PAGEREF _Toc362246587 \h 25
HYPERLINK \l "_Toc362246588" 2.2.3.1.4 Loopback Element PAGEREF _Toc362246588 \h 26
HYPERLINK \l "_Toc362246589" 2.2.3.1.5 LocalTransactionId Element PAGEREF _Toc362246589 \h 26
HYPERLINK \l "_Toc362246590" 2.2.3.1.6 RegisterInfo Element PAGEREF _Toc362246590 \h 26
HYPERLINK \l "_Toc362246591" 2.2.3.1.7 PropagationToken Element PAGEREF _Toc362246591 \h 27
HYPERLINK \l "_Toc362246592" 2.2.3.1.8 CoordinationContextAnyElementType Complex Type PAGEREF _Toc362246592 \h 27
HYPERLINK \l "_Toc362246593" 2.2.3.1.9 OleTxTransaction Element PAGEREF _Toc362246593 \h 28
HYPERLINK \l "_Toc362246594" 2.2.3.1.10 WS-AtomicTransaction (WS-AT) Protocol Extensions Error Codes PAGEREF _Toc362246594 \h 28
HYPERLINK \l "_Toc362246595" 2.2.3.2 Extended WS-AtomicTransaction Elements and Messages PAGEREF _Toc362246595 \h 28
HYPERLINK \l "_Toc362246596" 2.2.3.2.1 CoordinationContext Element PAGEREF _Toc362246596 \h 28
HYPERLINK \l "_Toc362246597" 2.2.3.2.2 Register Element PAGEREF _Toc362246597 \h 29
HYPERLINK \l "_Toc362246598" 2.2.3.2.3 RegisterResponse Message PAGEREF _Toc362246598 \h 30
HYPERLINK \l "_Toc362246599" 2.2.3.2.4 FlowTransaction Message PAGEREF _Toc362246599 \h 30
HYPERLINK \l "_Toc362246600" 3 Protocol Details PAGEREF _Toc362246600 \h 31
HYPERLINK \l "_Toc362246601" 3.1 AppClient Role Details PAGEREF _Toc362246601 \h 31
HYPERLINK \l "_Toc362246602" 3.1.1 Abstract Data Model PAGEREF _Toc362246602 \h 31
HYPERLINK \l "_Toc362246603" 3.1.2 Timers PAGEREF _Toc362246603 \h 31
HYPERLINK \l "_Toc362246604" 3.1.3 Initialization PAGEREF _Toc362246604 \h 31
HYPERLINK \l "_Toc362246605" 3.1.4 Higher-Layer Triggered Events PAGEREF _Toc362246605 \h 31
HYPERLINK \l "_Toc362246606" 3.1.4.1 BUILD_COORDINATION_CONTEXT PAGEREF _Toc362246606 \h 31
HYPERLINK \l "_Toc362246607" 3.1.4.2 FORMAT_FLOW_TRANSACTION PAGEREF _Toc362246607 \h 33
HYPERLINK \l "_Toc362246608" 3.1.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246608 \h 34
HYPERLINK \l "_Toc362246609" 3.1.6 Timer Events PAGEREF _Toc362246609 \h 34
HYPERLINK \l "_Toc362246610" 3.1.7 Other Local Events PAGEREF _Toc362246610 \h 34
HYPERLINK \l "_Toc362246611" 3.2 AppServer Role Details PAGEREF _Toc362246611 \h 34
HYPERLINK \l "_Toc362246612" 3.2.1 Abstract Data Model PAGEREF _Toc362246612 \h 34
HYPERLINK \l "_Toc362246613" 3.2.2 Timers PAGEREF _Toc362246613 \h 34
HYPERLINK \l "_Toc362246614" 3.2.3 Initialization PAGEREF _Toc362246614 \h 34
HYPERLINK \l "_Toc362246615" 3.2.4 Higher-Layer Triggered Events PAGEREF _Toc362246615 \h 34
HYPERLINK \l "_Toc362246616" 3.2.4.1 PARSE_FLOW_TRANSACTION PAGEREF _Toc362246616 \h 34
HYPERLINK \l "_Toc362246617" 3.2.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246617 \h 35
HYPERLINK \l "_Toc362246618" 3.2.6 Timer Events PAGEREF _Toc362246618 \h 35
HYPERLINK \l "_Toc362246619" 3.2.7 Other Local Events PAGEREF _Toc362246619 \h 35
HYPERLINK \l "_Toc362246620" 4 Protocol Examples PAGEREF _Toc362246620 \h 36
HYPERLINK \l "_Toc362246621" 4.1 Locating the Activation Service Endpoints PAGEREF _Toc362246621 \h 36
HYPERLINK \l "_Toc362246622" 4.1.1 Obtaining an Array of SExtendedEndpointInfo Structures PAGEREF _Toc362246622 \h 36
HYPERLINK \l "_Toc362246623" 4.1.2 Obtaining the WS-AtomicTransaction Activation Service Endpoints of the Transaction Coordinator PAGEREF _Toc362246623 \h 38
HYPERLINK \l "_Toc362246624" 4.2 Propagating and Committing a Transaction Example PAGEREF _Toc362246624 \h 39
HYPERLINK \l "_Toc362246625" 4.2.1 Creating a CoordinationContext PAGEREF _Toc362246625 \h 39
HYPERLINK \l "_Toc362246626" 4.2.2 Registering for Completion PAGEREF _Toc362246626 \h 40
HYPERLINK \l "_Toc362246627" 4.2.3 Propagating the Transaction PAGEREF _Toc362246627 \h 41
HYPERLINK \l "_Toc362246628" 4.2.4 Completing the Transaction PAGEREF _Toc362246628 \h 45
HYPERLINK \l "_Toc362246629" 5 Security PAGEREF _Toc362246629 \h 50
HYPERLINK \l "_Toc362246630" 5.1 Security Considerations for Implementers PAGEREF _Toc362246630 \h 50
HYPERLINK \l "_Toc362246631" 5.2 Index of Security Parameters PAGEREF _Toc362246631 \h 50
HYPERLINK \l "_Toc362246632" 6 Appendix B: Product Behavior PAGEREF _Toc362246632 \h 51
HYPERLINK \l "_Toc362246633" 7 Change Tracking PAGEREF _Toc362246633 \h 53
HYPERLINK \l "_Toc362246634" 8 Index PAGEREF _Toc362246634 \h 55
1 Introduction
The protocol specified in this document extends the WS-AtomicTransaction protocol specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], by enabling software entities that use the WS-AtomicTransaction protocol to participate in transactions coordinated by OleTx transaction managers, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO].
Sections 1.8, 2, and 3 of this specification are normative and can contain the terms MAY, SHOULD, MUST, MUST NOT, and SHOULD NOT as defined in RFC 2119. Sections 1.5 and 1.9 are also normative but cannot contain those terms. All other sections and examples in this specification are informative.
1.1 Glossary
The following terms are defined in HYPERLINK "[MS-GLOS].pdf" [MS-GLOS]:
base64fully qualified domain name (FQDN)globally unique identifier (GUID)GUIDString.NET FrameworkNULL GUIDOleTxtransactiontransaction identifiertransaction managertwo-phase commit
The following terms are specific to this document:
client application: A WS-AtomicTransaction initiator that also implements the Application Role Abstract Data Model, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO], and the AppClient Role, as specified in HYPERLINK \l "z2d600c1707c34f7fbfaa7a8992fa9992" 1.3.
coordinator: A coordinator as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11].
initiator: An initiator as specified HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11].
participant: A participant as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11].
server application: A WS-AtomicTransaction participant that also implements the Application Role, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] section 1.3.3.1, and the AppServer Role, as specified in this document.
transaction coordinator: A WS-AtomicTransaction coordinator that is also an implementation of the HYPERLINK "[MS-GLOS].pdf" OleTx HYPERLINK "[MS-GLOS].pdf" transaction manager, as specified in [MS-DTCO].
MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90317" [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
1.2 References
References to Microsoft Open Specifications documentation do not include a publishing year because links are to the latest version of the documents, which are updated frequently. References to other documents include a publishing year when one is available.
A reference marked "(Archived)" means that the reference document was either retired and is no longer being maintained or was replaced with a new document that provides current implementation details. We archive our documents online HYPERLINK "http://msdn.microsoft.com/en-us/library/jj633107.aspx " [Windows Protocol].
1.2.1 Normative References
We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact HYPERLINK "mailto:dochelp@microsoft.com" dochelp@microsoft.com. We will assist you in finding the relevant information. Please check the archive site, HYPERLINK "http://msdn2.microsoft.com/en-us/library/E4BD6494-06AD-4aed-9823-445E921C9624" http://msdn2.microsoft.com/en-us/library/E4BD6494-06AD-4aed-9823-445E921C9624, as an additional source.
[MS-CMP] Microsoft Corporation, " HYPERLINK "[MS-CMP].pdf" MSDTC Connection Manager: OleTx Multiplexing Protocol".
[MS-CMPO] Microsoft Corporation, " HYPERLINK "[MS-CMPO].pdf" MSDTC Connection Manager: OleTx Transports Protocol".
[MS-DTCO] Microsoft Corporation, " HYPERLINK "[MS-DTCO].pdf" MSDTC Connection Manager: OleTx Transaction Protocol".
[MS-DTYP] Microsoft Corporation, " HYPERLINK "[MS-DTYP].pdf" Windows Data Types".
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90317" http://www.rfc-editor.org/rfc/rfc2119.txt
[RFC2234] Crocker, D., and Overell, P., "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" http://www.ietf.org/rfc/rfc2234.txt
[RFC2396] Berners-Lee, T., Fielding, R., and Masinter, L., "Uniform Resource Identifiers (URI): Generic Syntax", RFC 2396, August 1998, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" http://www.ietf.org/rfc/rfc2396.txt
[RFC2616] Fielding, R., Gettys, J., Mogul, J., et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" http://www.ietf.org/rfc/rfc2616.txt
[RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" http://www.ietf.org/rfc/rfc2818.txt
[SOAP1.1] Box, D., Ehnebuske, D., Kakivaya, G., et al., "Simple Object Access Protocol (SOAP) 1.1", May 2000, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90520" http://www.w3.org/TR/2000/NOTE-SOAP-20000508/
[SOAP1.2-1/2003] Gudgin, M., Hadley, M., Mendelsohn, N., et al., "SOAP Version 1.2 Part 1: Messaging Framework", W3C Recommendation, June 2003, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90521" http://www.w3.org/TR/2003/REC-soap12-part1-20030624
[WSADDR] Gudgin, M., Hadley, M., and Rogers, T., "Web Services Addressing (WS-Addressing) 1.0", W3C Recommendation, May 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113065" http://www.w3.org/2005/08/addressing
[WSAT10] Arjuna Technologies Ltd., BEA Systems, Hitachi Ltd., IBM, IONA Technologies and Microsoft", Web Services Atomic Transaction (WS-AtomicTransaction)", August 2005, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" http://schemas.xmlsoap.org/ws/2004/10/wsat/
[WSAT11] OASIS, "Web Services Atomic Transaction (WS-AtomicTransaction) Version 1.1", July 2007, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" http://docs.oasis-open.org/ws-tx/wsat/2006/06
[WSC10] Arjuna Technologies Ltd., BEA Systems, Hitachi Ltd., IBM, IONA Technologies and Microsoft, "Web Services Coordination (WS-Coordination)", August 2005, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113068" http://schemas.xmlsoap.org/ws/2004/10/wscoor/
[WSC11] OASIS, "Web Services Coordination (WS-Coordination) 1.1", March 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" http://docs.oasis-open.org/ws-tx/wscoor/2006/06
[WSSC] OpenNetwork, Layer7, Netegrity, Microsoft, Reactivity, IBM, VeriSign, BEA Systems, Oblix, RSA Security, Ping Identity, Westbridge, Computer Associates, "Web Services Secure Conversation Language (WS-SecureConversation)", February 2005, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113070" http://schemas.xmlsoap.org/ws/2005/02/sc
[XML10/4] W3C Recommendation, "Extensible Markup Language (XML) 1.0 (Fourth Edition)", August 16, 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113071" http://www.w3.org/TR/2006/REC-xml-20060816
[XMLSCHEMA1.1/1] Thompson, H.S., Sperberg-McQueen, C.M., Mendelsohn, N., et al., Eds., "XML Schema 1.1 Part 1: Structures", W3C Working Draft, March 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" http://www.w3.org/TR/2006/WD-xmlschema11-1-20060330/
[XMLSCHEMA1.1/2:2008] Peterson, D., Biron, P.V., Malhotra, A., et al., Eds., "W3C XML Schema Definition Language (XSD) 1.1 Part 2: Datatypes", W3C Working Draft, June 2008, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90606" http://www.w3.org/TR/2008/WD-xmlschema11-2-20080620/
1.2.2 Informative References
[COM+] Microsoft Corporation, "Availability of Windows Server 2003 Post-Service Pack 1 COM+ 1.5 Hotfix Rollup Package 8", Version 5.8, December 2007, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=121482" http://support.microsoft.com/?kbid=912818
[MC-NMF] Microsoft Corporation, " HYPERLINK "[MC-NMF].pdf" .NET Message Framing Protocol".
[MS-GLOS] Microsoft Corporation, " HYPERLINK "[MS-GLOS].pdf" Windows Protocols Master Glossary".
[RFC2560] Myers, M., Ankney, R., Malpani, A., et al., "X.509 Internet Public Key Infrastructure Online Certificate Status Protocol - OCSP", RFC 2560, June 1999, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90369" http://www.ietf.org/rfc/rfc2560.txt
[RFC4178] Zhu, L., Leach, P., Jaganathan, K., and Ingersoll, W., "The Simple and Protected Generic Security Service Application Program Interface (GSS-API) Negotiation Mechanism", RFC 4178, October 2005, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90461" http://www.ietf.org/rfc/rfc4178.txt
[XPCOM+] Microsoft Corporation, "Availability of Windows XP COM+ Hotfix Rollup Package 13", Version 2.5, December 2007, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=121481" http://support.microsoft.com/?kbid=912817
1.3 Overview
WS-AtomicTransaction, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], defines three software entities that participate in Atomic Transactions:
зЁ H Y P E R L I N K \ l " z 3 " I n i t i a t o r : A s o f t w a r e c o m p o n e n t t h a t c r e a t e s a C o o r d i n a t i o n C o n t e x t ( t h a t i s , H Y P E R L I N K " [ M S - G L O S ] . p d f " t r a n s a c t i o n ) a n d r e g i s t e r s f o r t h e C o m p l e t i o n P r o t o c o l .
зЁ H Y P E R L I N K \ l " z 4 " P a r t i c i p a n t : A s o f t w a r e c o m p o n e n t t h a t r e q u e s t s a c t i v a t i o n o f a n e x i s t i n g C o o r d i n a t i o n C o n t e x t a n d r e g i s t e r s f o r t h e H Y P E R L I N K " [ M S - G L O S ] . p d f " T w o - P h a s e C o m m i t P r o t o c o l .
зЁ H Y P E R L I N K \ l " z 2 " C o o r d i n a t o r : A s o f t w a r e c o m p o n e n t t h a t m a n a g e s t h e s t a t e o f t r a n s a c t i o n s a n d e n s u r e s a c o n s i s t e n t o u t c o m e among the initiator and all participants in a given transaction. Coordinators, like participants, can also register for the Two-Phase Commit Protocol.
The protocol specified in this document extends the WS-AtomicTransaction protocol by enabling WS-AtomicTransaction initiators, participants, and coordinators to participate in transactions coordinated by HYPERLINK "[MS-GLOS].pdf" OleTx HYPERLINK "[MS-GLOS].pdf" transaction managers, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO].
This protoc o l d e f i n e s t w o r o l e s :
зЁ A p p C l i e n t R o l e : T h i s r o l e i s r e s p o n s i b l e f o r p e r f o r m i n g t h e f o l l o w i n g t a s k s :
зЁ B u i l d i n g a H Y P E R L I N K \ l " z b 5 7 0 8 d 3 9 c 3 b 1 4 b 5 0 9 a b 2 0 3 7 6 a f 4 4 5 7 8 d " C o o r d i n a t i o n C o n t e x t E l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 9 " [ W S C 1 1 ] , f r o m a n O l e T x t r a n s a c t i o n .
зЁ F o r m a t t i n g a H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " F l o w T r a n s a c t i o n M e s s a g e ( s e c t i o n H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " 2 . 2 . 3 . 2 . 4 H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " ) .
зЁ A p p S e r v e r R o l e : T h i s r o l e i s r e s p o n s i b l e f o r p a r s i n g a F l o w T r a n s a c t i o n M e s s a g e ( s e c t i o n 2 . 2 . 3 . 2 . 4 ) .
T h i s p r o t o c o l d e f i n e s t h e f o l l o w i n g s o f t w a r e e n t i t i e s :
зЁ H Y P E R L I N K \ l " z 1 " C l i e n t A p p l i c a t i o n : A W S - A t o m i c T r a n s a c t i o n i n i t i a t o r t h a t a l s o i m p l e m e n t s t h e A p p l i c a t i o n R o l e A b s t r a c t D a t a M o d e l , a s s p e c i f i e d i n [ M S - D T C O ] , a n d t h e A p p C l i e n t R o l e , a s s p e c i f i e d i n t h i s d o c u m e n t .
зЁ H Y P E R L I N K \ l " z 5 " S e r v e r A p p l i c a t i o n : A WS-AtomicTransaction participant that also implements the Application Role, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 1.3.3.1 HYPERLINK "[MS-DTCO].pdf" ), and the AppServer Role, as specified in this document.
зЁ H Y P E R L I N K \ l " z 6 " T r a n s a c t i o n C o o r d i n a t o r : A W S - A t o m i c T r a n s a c t i o n c o o r d i n a t o r t h a t i s a l s o a n i m p l e m e n t a t i o n o f t h e O l e T x t r a n s a c t i o n m a n a g e r , a s s p e c i f i e d i n [ M S - D T C O ] .
T h i s p r o t o c o l d e f i n e s t h e e x t e n d e d d a t a t y p e s a n d i n f o r m a t i o n u s e d d u r i n g W S - A t o m i c T r a n s a c t i o n a c t i v a t i o n , r e g i s t r a t i o n a n d p r o t o c o l p r o c e s s i n g , a n d a p p l i c a t i o n - t o - a p p l i c a t i o n S O A P m e s s a g i n g ( t h a t i s , i n i t i a t o r - t o - p a r t i c i p a n t m e s s a g i n g ) .
T h i s p r o t o c o l i s a p p l i c a b l e i n t h e f o l l o w i n g t h r e e s c e n a r i o s :
зЁ A t r a n s a c t i o n i s i n i t i a t e d b y a W S - A t o m i c T r a n s a c t i o n i n i t i a t o r a n d i t s c o o r d i n a t o r . I t i s s u b s e q u e n t l y f l o w e d t o a s e r v e r a p p l i c a t i o n a n d i t s t r a n s a c t i o n c o o r d i n a t o r .
зЁ A t r a n s a c t i o n i s i n i t i a t e d b y a c l i e n t a p p l i c a t i o n a n d i t s t r a n s a c t i o n c o o r d i n a t o r . I t i s s u b s e q u e n t l y f l o w e d t o a W S - A t o m i c T r a n s a c t i o n p a r t i c i p a n t a n d i t s c o o r d i n a t o r .
зЁ A t r a n s a c t i o n i s i n i t i a t e d b y a c l i e n t a p p l i c a t i o n a n d i t s t r a n s a c t i o n c o o r d i n a t o r . I t i s s u b s e q u e n t l y f l o w e d t o a s e r v e r a p p l i c a t i o n a n d i t s t r a n s a c t i o n c o o r d i n a t o r .
1 . 3 . 1 S c e n a r i o 1 : F l o w i n g a T r a n s a c t i on from an Initiator to a Server Application
In this scenario, a WS-AtomicTransaction initiator creates a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext (CC) Element and flows the transaction to a server application as a header in an implementation-specific SOAP message (App-App).
The server application parses the message through the AppServer Role and locates a CoordinationContext Element, but does not locate a Propagation_Token. The server application then uses protocols specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] and data types specified in this document to obtain the Uniform Resource Identifier (URI) of the Activation Service of a transaction coordinator. The server application propagates the transaction by sending a CreateCoordinationContext containing the flowed CoordinationContext to the Activation Service URI using the protocols specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], as shown in the following figure.
Figure 1: Flowing a transaction from an initiator to a server application
1.3.2 Scenario 2: Flowing a Transaction from a Client Application to a Participant
In this scenario, a client application creates a WS-AtomicTransaction HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext (CC) Element to flow to a WS-AtomicTransaction participant. Because the client application also supports HYPERLINK "[MS-DTCO].pdf" [MS-DTCO], it can create a CoordinationContext Element using one of two methods.
1.3.2.1 Scenario 2a: Flowing a WS-AtomicTransaction CoordinationContext from a Client Application to a Participant
The client application uses protocols specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] and data types specified in this document to obtain the URI of the Activation Service of a transaction coordinator. The client application then requests a new CoordinationContext (that is, transaction) through the Activation Service URI by using the protocols specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] or HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], depending on the implementation of the transaction coordinator.
In this scenario, the client application also creates a Propagation_Token (PT) from the transaction, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.5.4 HYPERLINK "[MS-DTCO].pdf" ). The client application then inserts the Propagation_Token in the HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element by using the AppClient Role, and then flows the CoordinationContext Element in the header of an implementation-specific SOAP message (App-App) to a WS-AtomicTransaction participant.
The participant, which does not support the protocols specified in [MS-DTCO], locates the CoordinationContext Element in the header of the SOAP message and requests activation using the flowed CoordinationContext Element, as shown in the following figure.
Figure 2: Flowing a WS-AtomicTransaction CoordinationContext from a client application to a participant
1.3.2.2 Scenario 2b: Flowing a Transaction from a Client Application to a Participant Using WS-AtomicTransaction
The client application begins a new OleTx transaction using protocols specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO]. The client application also obtains the URI of the Registration Service of a transaction coordinator using protocols specified in [MS-DTCO] and data types specified in this document. The client application then builds a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element by using the Registration Service URI and the OleTx transaction through the AppClient Role.
In this scenario, the client application also creates a Propagation_Token (PT) from the transaction, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.5.4 HYPERLINK "[MS-DTCO].pdf" ). The client application then inserts the Propagation_Token in the CoordinationContext Element by using the AppClient Role, and then it flows the CoordinationContext Element in the header of an implementation-specific SOAP message (App-App) to a WS-AtomicTransaction participant.
The participant, which does not support the protocols specified in [MS-DTCO], locates the CoordinationContext Element in the header of the SOAP message and requests activation using the flowed CoordinationContext Element, as shown in the following figure.
Figure 3: Flowing a transaction from a client application to a participant using WS-AtomicTransaction
1.3.3 Scenario 3: Flowing a Transaction from Client Application to a Server Application
In this scenario, a client application creates a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext (CC) Element and HYPERLINK \l "zc7330e649dee4bb5a5b58f7c4b348e58" Propagation_Token (PT) by using either of the two methods discussed in section HYPERLINK \l "z3c46fd639c43414da4bd89de613413ec" 1.3.2. The client application flows the CoordinationContext Element (including the Propagation_Token) in the header of an implementation-specific SOAP message (App-App) to a server application.
The server application parses the message through the AppServer Role and locates a CoordinationContext Element and a Propagation_Token. The server application then has the choice of either requesting activation using the flowed CoordinationContext Element or propagating the transaction using pull propagation, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 3.3.5.2.1 HYPERLINK "[MS-DTCO].pdf" ).
1.3.3.1 Scenario 3a: Server Application Uses Pull Propagation
In this scenario, the server application uses pull propagation to propagate the transaction, as shown in the following figure.
Figure 4: Server Application Using Pull Propagation
1.3.3.2 Scenario 3b: Server Application Requests Activation Using an Existing CoordinationContext
If the server application does not use pull propagation (or if propagation of the transaction using pull propagation failed), then the server application propagates the transaction by sending a CreateCoordinationContext containing the flowed HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element to the Activation Service URI by using the protocols specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], as shown in the following figure.
Figure 5: Server application requesting activation using an existing CoordinationContext
1.4 Relationship to Other Protocols
This protocol depends on WS-AtomicTransaction and the HYPERLINK "[MS-DTCO].pdf" MSDTC Connection Manager: OleTx Transaction Protocol [MS-DTCO] as shown in the following figure.
Figure 6: Relationship to other protocols
1.5 Prerequisites/Preconditions
This protocol requires the following:
зЁ A n i m p l e m e n t a t i o n o f a t r a n s a c t i o n c o o r d i n a t o r , w h i c h s u p p o r t s t h e A b s t r a c t D a t a M o d e l ( a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] ) a n d a l s o s u p p o r t s t h e c o o r d i n a t i o n o f W S - A t o m i c T r a n s a c t i o n t r a n s a c t i o n s ( a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 6 " [ W S A T 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 7 " [ W S A T 1 1 ] ) , i s p r e s e n t a n d r u n n i n g .
зЁ T h e D T C O i m p l e m e n t a t i o n s h o u l d s u p p o r t C O N N T Y P E _ T X U S E R _ E X T E N D E D W H E R E A B O U T S a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] s e c t i o n 3 . 3 . 5 . 2 . 2 . 1 .
зЁ E i t h e r t h e i m p l e m e n t a t i o n o f a c l i e n t a p p l i c a t i o n o r a s e r v e r a p p l i c a t i o n i s p r e s e n t a n d r u n n i n g .
1 . 6 A p p l i c a b i l i t y S t a t e m e n t
T h i s p r o t o c o l i s a p p l i c a b l e t o s c e n a r i o s t h a t r e q u i r e t h e p r o c e s s i n g o f W S - A tomicTransaction messages, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11], when one or more of the coordinators involved are implemented as an OleTx transaction manager, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO].
This protocol requires network topologies where the HYPERLINK "[MS-CMPO].pdf" MSDTC Connection Manager: OleTx Transports Protocol [MS-CMPO], the HYPERLINK "[MS-CMP].pdf" MSDTC Connection Manager: OleTx Multiplexing Protocol [MS-CMP], and the SOAP protocols HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90520" [SOAP1.1] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90521" [SOAP1.2-1/2003] create a viable network transport for establishing many short-lived connection exchanges that accomplish specific tasks. HYPERLINK \l "z9" <1>
1.7 Versioning and Capability Negotiation
This document covers versioning issues in the following areas:
зЁ S u p p o r t e d T r a n s p o r t s : T h i s p r o t o c o l i s i m p l e m e n t e d u s i n g t r a n s p o r t s t h a t s u p p o r t s e n d i n g S O A P m e s s a g e s a s d i s c u s s e d i n s e c t i o n H Y P E R L I N K \ l " z 9 3 3 B C E 1 3 2 F F B 4 4 E C 9 0 1 F 8 D A 2 6 E 3 E 1 2 B 6 " 2 . 1 .
зЁ P r o t o c o l V e r s i o n s : T h i s p r o t o c o l i s n o t v e r s i o n e d .
зЁ C a p a b i l i t y N e g otiation: This protocol does not support version negotiation.
1.8 Vendor-Extensible Fields
None.
1.9 Standards Assignments
None.
2 Messages
2.1 Transport
The WS-AtomicTransaction (WS-AT) Protocol can be used over any transport protocol that supports transmitting messages specified by the following protocols:
зЁ S O A P 1 . 1 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 5 2 0 " [ S O A P 1 . 1 ]
зЁ S O A P 1 . 2 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 5 2 1 " [ S O A P 1 . 2 - 1 / 2 0 0 3 ]
T h i s s p e c i f i c a t i o n u s e s t h e t e r m S O A P t o m e a n e i t h e r S O A P 1 . 1 o r S O A P 1 . 2 . W h e r e t h e differences between the two versions of the SOAP protocol are significant, either SOAP 1.1 or SOAP 1.2 is referenced.
The WS-AtomicTransaction (WS-AT) Protocol Extension software entities, Client Application, Server Application, and Transaction Coordinator, defined in section 1.3, use the following protocols as well:
зЁ M S D T C C o n n e c t i o n M a n a g e r : O l e T x M u l t i p l e x i n g P r o t o c o l a s s p e c i f i e d i n H Y P E R L I N K " [ M S - C M P ] . p d f " [ M S - C M P ] .
зЁ M S D T C C o n n e c t i o n M a n a g e r : O l e T x T r a n s p o r t s P r o t o c o l a s s p e c i f i e d i n H Y P E R L I N K " [ M S - C M P O ] . p d f " [ M S - C M P O ] .
2 . 2 M e s s a g e S y n t a x
T h e W S - A t o m i c Transaction (WS-AT) Protocol Extensions specification defines data types that are used by client applications and server applications when discovering the Activation and Registration Service URIs of a transaction coordinator, as specified in section HYPERLINK \l "z52e3d23129b945ea99181f9f31531bbc" 2.2.2. It also defines elements and an attribute that are used to extend the WS-AtomicTransaction ( HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11]) and WS-Coordination ( HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113068" [WSC10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11]) specifications, as specified in section HYPERLINK \l "z6514e035acae4defba152e9162933f49" 2.2.3. This protocol also references commonly used data types as defined in HYPERLINK "[MS-DTYP].pdf" [MS-DTYP].
This specification uses the term WS-AtomicTransaction to mean either WS-AtomicTransaction Version 1.0 or WS-AtomicTransaction Version 1.1. Where the differences between the two versions of the WS-AtomicTransaction protocol are significant, either WS-AtomicTransaction Version 1.0 or WS-AtomicTransaction Version 1.1 is referenced.
This specification uses the term WS-Coordination to mean either WS-Coordination Version 1.0 or WS-Coordination Version 1.1. Where the differences between the two versions of the WS-Coordination protocol are significant, either WS-Coordination Version 1.0 or WS-Coordination Version 1.1 is referenced.
2.2.1 Protocol Versioning
This protocol extension is not versioned.
2.2.2 Data Types Used When Discovering Coordinator Activation and Registration Service URIs
These data types are used by client applications and server applications when discovering a transaction coordinator's Activation and Registration Service URIs using SExtendedEndpointInfo information obtained through protocols as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.5.8 HYPERLINK "[MS-DTCO].pdf" ).
2.2.2.1 Enumerations
2.2.2.1.1 ControlProtocol
The ControlProtocol enumeration values identify the three WS-AtomicTransaction protocols, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11].
typedef enum ControlProtocol
{
Completion = 1,
Volatile2PC = 2,
Durable2PC = 3
} ControlProtocol;
Completion: The Completion Protocol, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] section 3.2 and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11] section 3.2.
Volatile2PC: The Volatile Two-Phase Commit Protocol, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] section 3.3.1 and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11] section 3.3.1.
Durable2PC: The Durable Two-Phase Commit Protocol, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113066" [WSAT10] section 3.3.2 and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11] section 3.3.2.
2.2.2.1.2 IsolationLevel
The IsolationLevel enumeration is a one-to-one mapping of the OLETX_ISOLATION_LEVEL enumeration, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.6.9 HYPERLINK "[MS-DTCO].pdf" ).
typedef enum IsolationLevel
{
Serializable = 0,
RepeatableRead = 1,
ReadCommitted = 2,
ReadUncommitted = 3,
Chaos = 5,
Unspecified = 6
} IsolationLevel;
Serializable: Equivalent to ISOLATIONLEVEL_SERIALIZABLE.
RepeatableRead: Equivalent to ISOLATIONLEVEL_REPEATABLEREAD.
ReadCommitted: Equivalent to ISOLATIONLEVEL_READCOMMITTED.
ReadUncommitted: Equivalent to ISOLATIONLEVEL_READUNCOMMITTED.
Chaos: Equivalent to ISOLATIONLEVEL_CHAOS.
Unspecified: Equivalent to ISOLATIONLEVEL_UPSPECIFIED.
2.2.2.2 Structures
2.2.2.2.1 ProtocolInformationFlags
The ProtocolInformationFlags is a byte field specifying network and security settings of the transaction coordinator endpoint.
01234567891012345678920123456789301bitFieldEncodingbitFieldEncoding (1 byte): The bits of this field MUST be encoded as follows.
01234567891012345678920123456789301TNIOCbit5bit6bit7T (1 bit): A flag indicating whether the transaction coordinator supports the use of security context tokens, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113070" [WSSC] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113067" [WSAT11]. If the value is 1, then security context tokens are supported; otherwise, they are not.
N (1 bit): A flag indicating whether the Activation Service SPNEGO endpoints are available, as specified in sections HYPERLINK \l "ze3176a4c8e3b49daa77e4098eff268e2" 2.2.2.3.3 and HYPERLINK \l "z9f502a9f6b9d4c81a93526c6a963aa4d" 2.2.2.3.4. If the value is 1, then endpoints are enabled; otherwise, they are not.
I (1 bit): A flag indicating whether or not the transaction coordinator supports registration requests for Two-Phase Commit Protocol. If the value is 1, then registration requests for Two-Phase Commit Protocol are supported; otherwise, they are not. If the value of this flag is not 1, then the value of the "O" flag MUST be 1.
O (1 bit): A flag indicating whether or not the transaction coordinator supports requesting registration for Two-Phase Commit Protocol. If the value is 1, then requesting registration for Two-Phase Commit Protocol is supported; otherwise, it is not. If the value of this flag is not 1, then the value of the "I" flag MUST be 1.
C (1 bit): The flag and its value MUST be ignored.
bit5 (1 bit): Not used; set to 0 and ignored.
bit6 (1 bit): Not used; set to 0 and ignored.
bit7 (1 bit): Not used; set to 0 and ignored.
2.2.2.2.2 SupportedProtocolsFlags
The SupportedProtocolsFlags is a 2-byte field consisting of bits that specify the WS-AtomicTransactions protocols supported by the Transaction Coordinator endpoint.
01234567891012345678920123456789301bitFieldEncodingbitFieldEncoding (2 bytes): The bits of this data type MUST be encoded as follows.
01234567891012345678920123456789301V1.0V1.1bit2thru15V1.0 (1 bit): A flag indicating whether WS-AtomicTransactions version 1.0 is supported by the endpoint. If the value is 1, then WS-AtomicTransactions version 1.0 is supported; otherwise, it is not.
ValueMeaning0WS-AtomicTransactions version 1.0 is not supported.1WS-AtomicTransactions 1.0 is supported.V1.1 (1 bit): A flag indicating whether WS-AtomicTransactions version 1.1 is supported by the endpoint. If the value is 1, then WS-AtomicTransactions version 1.1 is supported; otherwise, it is not.
ValueMeaning0WS-AtomicTransactions version 1.1 is not supported.1WS-AtomicTransactions version 1.1 is supported.bit2thru15 (14 bits): Not used.
2.2.2.2.3 VariableCharArray
The VariableCharArray structure contains a variable-length array of Latin-1 ANSI characters.
01234567891012345678920123456789301cbCharArrayszCharArray (variable)...cbCharArray (2 bytes): A 2-byte, unsigned integer value specifying the length of the szCharArray field in bytes.
szCharArray (variable): A variable-length byte array that contains a nonterminated string of Latin-1 ANSI characters. The length of the array MUST be equal to the value of the cbCharArray field.
2.2.2.2.4 WSAT_ProtocolGuid
The WSAT_ProtocolGuid is the binary representation of the HYPERLINK "[MS-GLOS].pdf" GUID, (cc228cf4-a9c8-43fc-8281-8565eb5889f2), as defined in HYPERLINK "[MS-DTYP].pdf" [MS-DTYP] section 2.3.4.
01234567891012345678920123456789301WSAT_ProtocolGuid.........WSAT_ProtocolGuid (16 bytes): Binary representation of the GUID, cc228cf4-a9c8-43fc-8281-8565eb5889f2.
01234567891012345678920123456789301dword1dword2dword3dword4dword1 (4 bytes): MUST be set to 0xCC228CF4.
dword2 (4 bytes): MUST be set to 0x43FCA9C8.
dword3 (4 bytes): MUST be set to 0x65858182.
dword4 (4 bytes): MUST be set to 0xF28958EB.
2.2.2.2.5 ExtendedWhereabouts
The ExtendedWhereabouts structure specifies the network location and security configuration of the transaction coordinator's WS-AtomicTransactions endpoint.
01234567891012345678920123456789301MajorVersionMinorVersionProtocolFlagsHttpsPort...MaxTimeout...HostName (variable)...BasePath (variable)...NodeName (variable)...SupportedProtocolsMajorVersion (1 byte): A 1-byte, unsigned integer value specifying the major version of the ExtendedWhereabouts structure. This value MUST be set to 0x01.
MinorVersion (1 byte): A 1-byte, unsigned integer value specifying the minor version of the ExtendedWhereabouts structure. This value MUST be set to one of the following values.
ValueMeaning0x01MinorVersion_10x02MinorVersion_2ProtocolFlags (1 byte): A 1-byte, HYPERLINK \l "z08275252225c406183596aee10347c56" ProtocolInformationFlags bit field.
HttpsPort (4 bytes): A 4-byte, unsigned integer specifying the HTTPS port number of the transaction coordinator WS-AtomicTransaction endpoints. This value MUST be between 1 and 65535, inclusively.
MaxTimeout (4 bytes): A 4-byte, unsigned integer specifying the maximum timeout in seconds allowed by the transaction coordinator. This value MUST be between 0 and 3600, inclusively.
HostName (variable): A HYPERLINK \l "zd7738ac51e19441399f058421cec227c" VariableCharArray structure specifying the HYPERLINK "[MS-GLOS].pdf" fully qualified domain name (FQDN) of the transaction coordinator's WS-AtomicTransaction endpoints.
BasePath (variable): A VariableCharArray structure specifying the base path segment HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396] of the transaction coordinator's WS-AtomicTransaction endpoints.
NodeName (variable): A VariableCharArray structure specifying the NetBIOS name of the transaction coordinator's WS-AtomicTransaction endpoints.
SupportedProtocols (2 bytes): A HYPERLINK \l "z71aacbcf6f3d44f58bd67ffccd39c71f" SupportedProtocolsFlags bit field.
2.2.2.3 Coordinator Activation Service URIs
2.2.2.3.1 HTTPS Activation Service Version 1.0 X.509 URI
The HTTPS Activation Service Version 1.0 X.509 URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc10_X509_URI Augmented Backus-Naur Form (ABNF) rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc10_X509_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Activation/Coordinator/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.0" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Activation Service Version 1.0 X.509 endpoint at this URI.
2.2.2.3.2 HTTPS Activation Service Version 1.1 X.509 URI
The HTTPS Activation Service Version 1.1 X.509 URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc11_X509_URI ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc11_X509_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Activation/Coordinator11/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.1" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Activation Service Version 1.1 X.509 endpoint at this URI.
2.2.2.3.3 HTTPS Activation Service Version 1.0 SPNEGO URI
The HTTPS Activation Service Version 1.0 SPNEGO URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc10_WinA_URI ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc10_WinA_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Activation/Coordinator/Remote/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.0" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1 and the "N" ProtocolInformationFlags in the ProtocolFlags field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Activation Service Version 1.0 SPNEGO endpoint at this URI.
2.2.2.3.4 HTTPS Activation Service Version 1.1 SPNEGO URI
The HTTPS Activation Service Version 1.1 SPNEGO URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc11_WinA_URI ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc11_WinA_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Activation/Coordinator11/Remote/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.1" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1 and the "N" ProtocolInformationFlags in the ProtocolFlags field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Activation Service Version 1.1 SPNEGO endpoint at this URI.
2.2.2.4 Coordinator Registration Service URIs
2.2.2.4.1 HTTPS Registration Service Version 1.0 X.509 URI
The HTTPS Registration Service Version 1.0 X.509 URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc10_X509_URI ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc10_X509_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Registration/Coordinator/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.0" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Registration Service Version 1.0 X.509 endpoint at this URI.
2.2.2.4.2 HTTPS Registration Service Version 1.1 X.509 URI
The HTTPS Registration Service Version 1.1 X.509 URI is an HTTP/TLS URI, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818], which results from resolving the following ActSvc11_X509_URI ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
ActSvc11_X509_URI = "https:" "//" host ":" port abs_path
abs_path = "/" segment "/Registration/Coordinator11/"
The ABNF tokens "host", "port", and "segment", specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90339" [RFC2396], are used to construct HTTPS URIs as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90383" [RFC2818]. The specific values for these tokens are derived from an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure as follows.
host: MUST be the szCharArray field of the HostName field.
port: MUST be the HttpsPort field.
segment: MUST be the szCharArray field of the BasePath field.
If the "V1.1" SupportedProtocolFlag in the SupportedProtocols field of the ExtendedWhereabouts structure is 1, then the Coordinator MUST implement the HTTPS Registration Service Version 1.1 X.509 endpoint at this URI.
2.2.3 Data Types Used to Extend WS-AtomicTransaction
This section defines XML data types ( HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113071" [XML10/4] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90606" [XMLSCHEMA1.1/2:2008]) used to communicate using the WS-AtomicTransaction protocol between participants and coordinators, and to propagate a transaction from an initiator to a participant or from one participant to another.
2.2.3.1 Common Data Types
2.2.3.1.1 GuidStringType Complex Type
The GuidStringType Complex Type HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used to represent a HYPERLINK "[MS-GLOS].pdf" GUIDString.
2.2.3.1.2 UrnUuidStringType Complex Type
The UrnUuidStringType Complex Type HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used to represent a GUIDString prepended with the string "urn:uuid:".
2.2.3.1.3 Enlistment Element
The Enlistment Element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used to uniquely identify registration (or enlistment) instances during the lifetime of a WS-AtomicTransaction transaction.
protocol: If present, the value of this attribute MUST be set to one of the HYPERLINK \l "z3ba367cdacee46358dc959c41a5d1036" ControlProtocol values specified in section HYPERLINK \l "z3ba367cdacee46358dc959c41a5d1036" 2.2.2.1.1.
2.2.3.1.4 Loopback Element
The Loopback Element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used to uniquely identify coordinators during registration to prevent coordinators from self-registering.
2.2.3.1.5 LocalTransactionId Element
The LocalTransactionId element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used to uniquely identify the transaction represented by a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element.
2.2.3.1.6 RegisterInfo Element
The RegisterInfo Element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is a container for other elements that uniquely identify a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element.
LocalTransactionId: This element MUST be a HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" LocalTransactionId Element (section HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" 2.2.3.1.5 HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" ).
ContextId: If present, the value of this element is implementation-specific and MUST be ignored.
TokenId: If present, the value of the element MUST be the identifier of the security context token identifier used in the construction of the SOAP message, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113070" [WSSC].
2.2.3.1.7 PropagationToken Element
The PropagationToken Element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is used when propagating a transaction using pull propagation, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 3.3.5.2.1 HYPERLINK "[MS-DTCO].pdf" ).
PropagationToken: The value of the element MUST be a HYPERLINK "[MS-GLOS].pdf" base64 encoding of a Propagation_Token, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.5.4 HYPERLINK "[MS-DTCO].pdf" ). HYPERLINK \l "z11" <2>
2.2.3.1.8 CoordinationContextAnyElementType Complex Type
The CoordinationContextAnyElementType Complex Type HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is a container for other elements that is used to provide additional information about the transaction represented by a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element.
IsolationLevel: The value of this element MUST be set to one of the values as specified HYPERLINK \l "z173b6d1c2e284054a52c4fb8941fc2ec" 2.2.2.1.2.
IsolationFlags: The value of the element MUST be set to one of the OLETX_ISOLATION_FLAGS values specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.6.8 HYPERLINK "[MS-DTCO].pdf" ).
Description: The value of the element MUST be set to an implementation-specific string.
LocalTransactionId: This element MUST be a HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" LocalTransactionId Element as specified in section HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" 2.2.3.1.5.
PropagationToken: This element MUST be a HYPERLINK \l "zc7330e649dee4bb5a5b58f7c4b348e58" PropagationToken Element as specified in section HYPERLINK \l "zc7330e649dee4bb5a5b58f7c4b348e58" 2.2.3.1.7.
2.2.3.1.9 OleTxTransaction Element
The OleTxTransaction Element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90605" [XMLSCHEMA1.1/1] is a container for the HYPERLINK \l "zc7330e649dee4bb5a5b58f7c4b348e58" PropagationToken Element and is used when propagating an OleTx transaction.
PropagationToken: This element MUST be a PropagationToken Element (section 2.2.3.1.7).
2.2.3.1.10 WS-AtomicTransaction (WS-AT) Protocol Extensions Error Codes
The WS-AtomicTransaction (WS-AT) Protocol Extensions Error Codes are used to communicate implementation-specific SOAP faults. HYPERLINK \l "z13" <3>
2.2.3.2 Extended WS-AtomicTransaction Elements and Messages
2.2.3.2.1 CoordinationContext Element
The CoordinationContext Element is a CoordinationContext, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113068" [WSC10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11], with the additional constraints listed in the following figure.
Figure 7: CoordinationContext Element constraints
The HYPERLINK \l "z3ab023a1196f4e15b8b9f1f6272b0829" RegisterInfo Element (section HYPERLINK \l "z3ab023a1196f4e15b8b9f1f6272b0829" 2.2.3.1.6 HYPERLINK \l "z3ab023a1196f4e15b8b9f1f6272b0829" ) MUST be the only element in the WS-Addressing ReferenceParameters element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113065" [WSADDR] in the WS-Coordination RegistrationService element in the CoordinationContext Element.
The HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" CoordinationContextAnyElementType Complex Type (section HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" 2.2.3.1.8 HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" ) MUST be the first Any element in the CoordinationContext Element.
2.2.3.2.2 Register Element
The Register Element is a Register element, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113068" [WSC10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11], with the additional constraints listed in the following figure.
Figure 8: Register Element constraints
The HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" Enlistment Element (section HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" 2.2.3.1.3 HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" ) MUST be the only element in the WS-Addressing ReferenceParameters element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113065" [WSADDR] in the WS-Coordination ParticipantProtocolService element in the Register Element.
The HYPERLINK \l "zfccc7a13cfc54e0f8fe1105b35534265" Loopback Element (section HYPERLINK \l "zfccc7a13cfc54e0f8fe1105b35534265" 2.2.3.1.4 HYPERLINK \l "zfccc7a13cfc54e0f8fe1105b35534265" ) MUST be the first Any element in the WS-Coordination ParticipantProtocolService element in the Register Element.
2.2.3.2.3 RegisterResponse Message
The RegisterResponse Message is a RegisterResponse element, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113068" [WSC10] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11], with the additional constraints listed in the following figure.
Figure 9: RegisterResponse Element constraints
The HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" Enlistment Element (section HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" 2.2.3.1.3 HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" ) MUST be the only element in the WS-Addressing ReferenceParameters element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113065" [WSADDR] in the WS-Coordination CoordinatorProtocolService element in the RegisterResponse element.
2.2.3.2.4 FlowTransaction Message
The FlowTransaction Message is a SOAP Request/Reply message containing either a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element or an HYPERLINK \l "z173522425e824c7ab8aff76c8a561936" OleTxTransaction Element as a SOAP header, but not both.
Figure 10: FlowTransaction Message
If present, the OleTxTransaction Element (section 2.2.3.1.9) MUST be a header in a SOAP message. The mustUnderstand attribute, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90521" [SOAP1.2-1/2003] section 5.2.3, MUST be present, and its value MUST be set to TRUE.
If present, the CoordinationContext Element (section 2.2.3.2.1) MUST be a header in a SOAP message. The mustUnderstand attribute MUST be present, and its value MUST be set to TRUE.
3 Protocol Details
3.1 AppClient Role Details
3.1.1 Abstract Data Model
None.
3.1.2 Timers
None.
3.1.3 Initialization
None.
3.1.4 Higher-Layer Triggered Events
Two higher-layer trigger e d e v e n t s a r e s p e c i f i e d f o r t h e A p p C l i e n t R o l e :
зЁ H Y P E R L I N K \ l " z 1 c 6 2 8 b c 5 4 e 6 8 4 c 2 4 8 f 3 7 f 7 c 3 f 2 4 4 3 2 8 6 " B U I L D _ C O O R D I N A T I O N _ C O N T E X T e v e n t .
зЁ H Y P E R L I N K \ l " z d 9 5 6 3 9 8 5 7 3 b 3 4 1 c a a e 6 7 a e f d 1 6 4 5 b d a 5 " F O R M A T _ F L O W _ T R A N S A C T I O N e v e n t .
3 . 1 . 4 . 1 B U I L D _ C O O R D I N A T I O N _ C O N T E X T
T h e B U I L D _ C O O R D I N A T I O N _ C O N T E X T e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c w i t h t h e f o l l o w i n g r e q u i r e d a r g u m e n t s :
зЁ A H Y P E R L I N K " [ M S - G L O S ] . p d f " t r a n s a c t i o n i d e n t i f i e r w h i c h c o n t a i n s a G U I D
зЁ A t r a n s a c t i o n o b j e c t t h a t c o n t a i n s t h e f o l l o w i n g d a t a f i e l d s , a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] ( s e c t i o n H Y P E R L I N K " [ M S - D T C O ] . p d f " 2 . 2 . 8 . 1 . 1 . 2 H Y P E R L I N K " [ M S - D T C O ] . p d f " ) :
зЁ T h e i s o L e v e l f i e l d
зЁ T h e d w T i m e o u t f i e l d
зЁ T h e s z D e s c f i e l d
зЁ T h e i s o F l a g s f i e l d
зЁ T h e t r a n s a c t i o n c o o r d i n a t o r ' s R e g i s t r a t i o n S e r v i c e U R I
зЁ A H Y P E R L I N K \ l " z 7 1 a a c b c f 6 f 3 d 4 4 f 5 8 b d 6 7 f f c c d 3 9 c 7 1 f " S u p p o r t e d P r o t o c o l s F l a g s ( s e c t i o n H Y P E R L I N K \ l " z 7 1 a a c b c f 6 f 3 d 4 4 f 5 8 b d 6 7 f f c c d 3 9 c 7 1 f " 2 . 2 . 2 . 2 . 2 H Y P E R L I N K \ l " z 7 1 a a c b c f 6 f 3 d 4 4 f 5 8 b d 6 7 f f c c d 3 9 c 7 1 f " ) f i e l d
I f t h e B U I L D _ C O O R D I N A T I O N _ C O N T E X T e v e n t i s s i g n a l e d , t h e A p p C l i e n t R o l e M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
зЁ I f b o t h t h e t r a n s a c t i o n o b j e c t a n d t h e R e g i s t r a t i o n S e r v i c e U R I a r g u m e n t s a r e p r o v i d e d :
зЁ C r e a t e a H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e ( s e c t i o n H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " 2 . 2 . 3 . 1 . 8 H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " ) c o n t a i n i n g t h e f o l l o w i n g e l e m e n t s :
зЁ I f t h e i s o L e v e l f i e l d v a l u e i s n o t I S O L A TIONLEVEL_UNSPECIFIED (0xFFFFFFFF), create an IsolationLevel element, as specified in section HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" 2.2.3.1.8, setting the value to the corresponding HYPERLINK \l "z173b6d1c2e284054a52c4fb8941fc2ec" IsolationLevel (section HYPERLINK \l "z173b6d1c2e284054a52c4fb8941fc2ec" 2.2.2.1.2 HYPERLINK \l "z173b6d1c2e284054a52c4fb8941fc2ec" ) value.
зЁ I f t h e i s o F l a g s f i e l d v a l u e i s n o t I S O F L A G _ R E T A I N _ D E F A U L T ( 0 x 0 0 0 0 0 0 0 0 , a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] s e c t i o n 2 . 2 . 6 . 8 ) , c r e a t e a n C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e ( s e c t i o n H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " 2 . 2 . 3 . 1 . 8 ) e l e m e n t , s e t t i n g t h e v a l u e t o t h e i s o F l a g s v a l u e .
зЁ I f t h e s z D e s c f i e l d i s n o t a n e m p t y s t r i n g , c r e a t e a C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e ( s e c t i o n 2 . 2 . 3 . 1 . 8 ) e l e m e n t , s e t t i n g t h e v a l u e t o t h e s z D e s c v a l u e .
зЁ I f t h e t r a n s a ction identifier is not the HYPERLINK "[MS-GLOS].pdf" NULL GUID, create a HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" LocalTransactionId Element (section HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" 2.2.3.1.5 HYPERLINK \l "z046ea570684b430888a1ff3d8da8d67d" ), setting the value to a string representation of the transaction identifier.
зЁ C r e a t e a W S - A d d r e s s i n g A d d r e s s e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 5 " [ W S A D D R ] , s e t t i n g t h e v a l u e t o t h e R e g i s t r a t i o n S e r v i c e U R I a r g u m e n t .
зЁ C r e a t e a L o c a l T r a n s a c t i o n I d E l e m e n t ( s e c t i o n 2 . 2 . 3 . 1 . 5 ) s e t t i n g t h e v a l u e t o a s t r i n g r e p r e s e n t a t i o n o f t h e t r a n s a c t i o n i d e n t i f i e r .
зЁ C r e a t e a H Y P E R L I N K \ l " z 3 a b 0 2 3 a 1 1 9 6 f 4 e 1 5 b 8 b 9 f 1 f 6 2 7 2 b 0 8 2 9 " R e g i s t e r I n f o E l e m e n t ( s e c t i o n H Y P E R L I N K \ l " z 3 a b 0 2 3 a 1 1 9 6 f 4 e 1 5 b 8 b 9 f 1 f 6 2 7 2 b 0 8 2 9 " 2 . 2 . 3 . 1 . 6 H Y P E R L I N K \ l " z 3 a b 0 2 3 a 1 1 9 6 f 4 e 1 5 b 8 b 9 f 1 f 6 2 7 2 b 0 8 2 9 " ) c o n t a i n i n g t h e p r e v i o u s l y c r e a t e d L o c a l T r a n s a c t i o n I d E l e m e n t .
зЁ C r e a t e a W S - A d d r e s s i n g R e f e r e n c e P a r a m e t e r s e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 5 " [ W S A D D R ] , c o n t a i n i n g t h e p r e v i o u s l y c r e a t e d R e g i s t e r I n f o E l e m e n t .
зЁ C r e a t e a W S - C o o r d i n a t i o n R e g i s t r a t i o n S e r v i c e e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 9 " [ W S C 1 1 ] , c o n t a i n i n g t h e f o l l o w i n g o r d e r e d e l e m e n t s :
зЁ T h e p r e v i o u s l y c r e a t e d W S - A d d r e s s i n g A d d r e s s e l e m e n t
зЁ T h e p r e v i o u s l y c r e a t e d W S - A d d r e s s i n g R e f e r e n c e P a r a m e t e r s e l e m e n t
зЁ C r e a t e a W S - C o o r d i n a t i o n I d e n t i f i e r e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 9 " [ W S C 1 1 ] , s e t t i n g t h e v a l u e t o a s t r i n g r e p r e s e n t a t i o n o f t h e T r a n s a c t i o n I d e n t i f i e r p r e - p e n d e d w i t h t h e s t r i n g " u r n : u u i d : " .
зЁ C r e a t e a W S - C o o r d i n a t i o n E x p i r e s e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 9 " [ W S C 1 1 ] , s e t t i n g t h e v a l u e t o t h e v a l u e o f t h e d w T i m e o u t f i e l d .
зЁ I f t h e V 1 . 1 f l a g i n t h e S u p p o r tedProtocolsFlags field is set to 1, create a WS-Coordination CoordinationType element, as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11], setting the value as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=113069" [WSC11].
зЁ O t h e r w i s e i f t h e V 1 . 0 f l a g i n t h e S u p p o r t e d P r o t o c o l s F l a g s f i e l d i s s e t t o 1 , c r e a t e a W S - C o o r d i n a t i o n C o o r d i n a t i o n T y p e e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] , s e t t i n g t h e v a l u e a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] .
зЁ O t h e r w i s e , r e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ C r e a t e a W S - C o o r d i n a t i o n C o o r d i n a t i o n C o n t e x t e l e m e n t , a s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 8 " [ W S C 1 0 ] a n d H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 1 3 0 6 9 " [ W S C 1 1 ] , c o n t a i n i n g t h e f o l l o w i n g o r d e r e d e l e m e n t s :
зЁ T h e p r e v i o u s l y c r e a t e d W S - C o o r d i n a t i o n I d e n t i f i e r e l e m e n t
зЁ T h e p r e v i o u s l y c r e a t e d W S - C o o r d i n a t i o n E x p i r e s e l e m e n t
зЁ T h e p r e v i o u s l y c r e a t e d W S - C o o r d i n a t i o n C o o r d i n a t i o n T y p e e l e m e n t
зЁ T h e p r e v i o u s l y c r e a t e d W S - C o o r d i n a t i o n R e g i s t r a t i o n S e r v i c e e l e m e n t
зЁ T h e C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e c r e a t e d e a r l i e r
зЁ R e t u r n t h e W S - C o o r d i n a t i o n C o o r d i n a t i o n C o n t e x t e l e m e n t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , r e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
3 . 1 . 4 . 2 F O R M A T _ F L O W _ T R A N S A C T I O N
T h e F O R M A T _ F L O W _ T R A N S A C T I O N e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c w i t h t h e f o l l o w i n g r e q u i r e d a r g u m e n t :
зЁ A H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " F l o w T r a n s a c t i o n M e s s a g e ( s e c t i o n H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " 2 . 2 . 3 . 2 . 4 H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " ) .
A n d o n e o r b o t h o f t h e f o l l o w i n g o p t i o n a l a r g u m e n t s :
зЁ A P r o p a g a t i o n _ T o k e n r e p r e s e n t i n g a n e x i s t i n g t r a n s a c t i o n , a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] ( s e c t i o n H Y P E R L I N K " [ M S - D T C O ] . p d f " 2 . 2 . 5 . 4 H Y P E R L I N K " [ M S - D T C O ] . p d f " ) .
зЁ A H Y P E R L I N K \ l " z b 5 7 0 8 d 3 9 c 3 b 1 4 b 5 0 9 a b 2 0 3 7 6 a f 4 4 5 7 8 d " C o o r d i n a t i o n C o n t e x t E l e m e n t ( s e c t i o n H Y P E R L I N K \ l " z b 5 7 0 8 d 3 9 c 3 b 1 4 b 5 0 9 a b 2 0 3 7 6 a f 4 4 5 7 8 d " 2 . 2 . 3 . 2 . 1 H Y P E R L I N K \ l " z b 5 7 0 8 d 3 9 c 3 b 1 4 b 5 0 9 a b 2 0 3 7 6 a f 4 4 5 7 8 d " ) r e p r e s e n t i n g t h e s a m e t r a n s a c t i o n .
I f t h e F O R M A T _ F L O W _ T R A N S A C T I O N e v e n t i s s i g n a l e d , t h e A p p C l i e n t R o l e M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
зЁ I f o n l y a P r o p a g a t i o n _ T o k e n a r g u m e n t i s p r o v i d e d :
зЁ E n c o d e t h e P r o p a g a t i o n _ T o k e n u s i n g b a s e 6 4 a n d c r e a t e a H Y P E R L I N K \ l " z c 7 3 3 0 e 6 4 9 d e e 4 b b 5 a 5 b 5 8 f 7 c 4 b 3 4 8 e 5 8 " P r o p a g a t i o n T o k e n E l e m e n t ( s e c t i o n H Y P E R L I N K \ l " z c 7 3 3 0 e 6 4 9 d e e 4 b b 5 a 5 b 5 8 f 7 c 4 b 3 4 8 e 5 8 " 2 . 2 . 3 . 1 . 7 H Y P E R L I N K \ l " z c 7 3 3 0 e 6 4 9 d e e 4 b b 5 a 5 b 5 8 f 7 c 4 b 3 4 8 e 5 8 " ) , s e t t i n g t h e v a l u e t o t h e b a s e 6 4 e n c o d e d P r o p a g a t i o n _ T o k e n .
зЁ C r e a t e a n H Y P E R L I N K \ l " z 1 73522425e824c7ab8aff76c8a561936" OleTxTransaction Element (section HYPERLINK \l "z173522425e824c7ab8aff76c8a561936" 2.2.3.1.9 HYPERLINK \l "z173522425e824c7ab8aff76c8a561936" ) and insert the PropagationToken Element as the only child element. HYPERLINK \l "z15" <4>
зЁ I n s e r t t h e O l e T x T r a n s a c t i o n E l e m e n t a s a S O A P h e a d e r i n t h e F l o w T r a n s a c t i o n M e s s a g e .
зЁ R e t u r n t h e F l o w T r a n s a c t i o n M e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , i f o n l y a C o o r d i n a t i o n C o n t e x t E l e m e n t a r g u m e n t i s i n c l u d e d :
зЁ I n s e r t t h e C o o r d i n a t i o n C o n t e x t E l e m e n t a s a S O A P h e a d e r i n t h e F l o w T r a n s a c t i o n M e s s a g e .
зЁ R e t u r n t h e F l o w T r a n s a c t i o n M e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , i f b o t h a P r o p a g a t i o n _ T o k e n a r g u m e n t a n d a C o o r d i n a t i o n C o n t e x t E l e m e n t a r g u m e n t a r e i n c l u d e d :
зЁ E n c o d e t h e P r o p a g a t i o n _ T o k e n u s i n g b a s e 6 4 , a n d c r e a t e a P r o p a g a t i o n T o k e n E l e m e n t ( s e c t i o n 2 . 2 . 3 . 1 . 7 ) , s e t t i n g t h e v a l u e t o t h e b a s e 6 4 e n c o d e d P r o p a g a t i o n _ T o k e n .
зЁ I n s e r t ( o r r e p l a c e i f a l r e a d y p r e s e n t ) t h e P r o p a g a t i o n T o k e n E l e m e n t i n t h e H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e o f t h e C o o r d i n a t i o n C o n t e x t E l e m e n t ( s e c t i o n 2 . 2 . 3 . 2 . 1 ) .
зЁ I n s e r t t h e C o o r d i n a t i o n C o n t e x t E l e m e n t a s a S O A P h e a d e r i n t h e F l o w T r a n s a c t i o n M e s s a g e .
зЁ R e t u r n t h e F l o w T r a n s a c t i o n M e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , r e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
3 . 1 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
N o n e .
3 . 1 . 6 T i m e r E v e n t s
N o n e .
3 . 1 . 7 O t h e r L o c a l E v e n t s
N o n e .
3.2 AppServer Role Details
3.2.1 Abstract Data Model
None.
3.2.2 Timers
None.
3.2.3 Initialization
None.
3.2.4 Higher-Layer Triggered Events
One higher-layer triggered event, the HYPERLINK \l "z74dfc21ffb8641aab187f5cd7e8ada31" PARSE_FLOW_TRANSACTION event, is specified for the AppServer Role.
3.2.4.1 PARSE_FLOW_TRANSACTION
The PARSE_FLOW_TRANSACTION event MUST be signaled by the higher-layer business logic with the following required argument:
зЁ A H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " F l o w T r a n s a c t i o n M e s s a g e ( s e c t i o n H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " 2 . 2 . 3 . 2 . 4 H Y P E R L I N K \ l " z d 7 a a d 6 2 d 5 2 7 1 4 6 8 b b 7 4 a 8 c 7 4 4 7 5 b 0 b e 7 " ) .
I f t h e P A R S E _ F L O W _ T R A N S A C T I O N e v e n t i s s i g n a l e d , t h e A p p S e r v e r R o l e M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
зЁ I f t h e S O A P m e s s a g e c o n t a i n s a H Y P E R L I N K \ l " z 1 7 3 5 2 2 4 2 5 e 8 2 4 c 7 a b 8 a f f 7 6 c 8 a 5 6 1 9 3 6 " O l e T x T r a n s a c t i o n E l e m e n t S O A P h e a d e r :
зЁ E x t r a c t a n d d e c o d e t h e b a s e 6 4 e n c o d e d P r o p a g a t i o n _ T o k e n f r o m t h e v a l u e o f t h e H Y P E R L I N K \ l " z c 7 3 3 0 e 6 4 9 d e e 4 b b 5 a 5 b 5 8 f 7 c 4 b 3 4 8 e 5 8 " P r o p a g a t i o n T o k e n E l e m e n t i n t h e O l e T x T r a n s a c t i o n E l e m e n t .
зЁ R e t u r n t h e d e c o d e d P r o p a g a t i o n _ T o k e n t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e i f t h e S O A P m e s s a g e c o n t a i n s a H Y P E R L I N K \ l " z b 5 7 0 8 d 3 9 c 3 b 1 4 b 5 0 9 a b 2 0 3 7 6 a f 4 4 5 7 8 d " C o o r d i n a t i o n C o n t e x t E l e m e n t S O A P h e a d e r :
зЁ E x t r a c t t h e C o o r d i n a t i o n C o n t e x t E l e m e n t f r o m t h e S O A P h e a d e r o f t h e F l o w T r a n s a c t i o n M e s s a g e .
зЁ I f t h e C o o r d i n a t i o n C o n t e x t E l e m e n t c o n t a i n s a P r o p a g a t i o n T o k e n E l e m e n t i n i t s H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " C o o r d i n a t i o n C o n t e x t A n y E l e m e n t T y p e C o m p l e x T y p e ( s e c t i o n H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " 2 . 2 . 3 . 1 . 8 H Y P E R L I N K \ l " z 6 a e b 1 c 0 f e 0 c 2 4 c 8 b 9 1 0 8 a 7 2 e 1 0 6 5 5 4 5 e " ) :
зЁ E x t r a c t a n d d e c o d e t h e B a s e 6 4 e n c o d e d P r o p a g a t i o n _ T o k e n f r o m t h e v a l u e o f t h e P r o p a g a t i o n T o k e n E l e m e n t .
зЁ R e t u r n t h e d e c o d e d P r o p a g a t i o n _ T o k e n a n d t h e C o o r d i n a t i o n C o n t e x t E l e m e n t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , r e t u r n t h e C o o r d i n a t i o n C o n t e x t E l e m e n t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
зЁ O t h e r w i s e , r e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
3 . 2 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
N o n e .
3 . 2 . 6 T i m e r E v e n t s
N o n e .
3 . 2 . 7 O t h e r L o c a l E v e n t s
N o n e .
4 P r o t o c o l E x a m p l e s
4 . 1 Locating the Activation Service Endpoints
This example shows how an application, either a client application (as described in sections HYPERLINK \l "z3c46fd639c43414da4bd89de613413ec" 1.3.2 and HYPERLINK \l "zce7d5aa4cbcf4ebf9482ae3dfe12e53f" 1.3.3) or a server application (as described in section HYPERLINK \l "zee43a6060a704ccca5d6401f3db8716d" 1.3.1), obtains the WS-AtomicTransaction Activation Service Endpoint of a transaction coordinator by performing the following two tasks:
зЁ T h e a p p l i c a t i o n f i r s t o b t a i n s a n a r r a y o f S E x t e n d e d E n d p o i n t I n f o s t r u c t u r e s v i a a n A p p l i c a t i o n R o l e I m p l e m e n t a t i o n , a s s p e c i f i e d i n H Y P E R L I N K " [ M S - D T C O ] . p d f " [ M S - D T C O ] ( s e c t i o n H Y P E R L I N K " [ M S - D T C O ] . p d f " 3 . 3 . 5 . 2 . 2 . 1 H Y P E R L I N K " [ M S - D T C O ] . p d f " ) .
зЁ T h e a p p l i c a t i o n t h e n t r a n s l a t e s t h e a r r a y o f S E x t e n d e d E n d p o i n t I n f o s t r u c t u r e s i n t o t h e t r a n s a c t i o n c o o r d i n a t o r ' s A c t i v a t i o n S e r v i c e E n d p o i n t s , a s s p e c i f i e d i n H Y P E R L I N K \ l " z 6 e 2 4 0 b 7 e b 6 f 8 4 2 8 a a 5 9 1 6 2 8 3 4 5 6 7 2 4 7 5 " 2 . 2 . 2 . 3 .
4 . 1 . 1 O b t a i n i n g a n A r r a y o f S E x tendedEndpointInfo Structures
An Application Role Implementation, as specified in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 3.3 HYPERLINK "[MS-DTCO].pdf" ), communicates with a transaction coordinator using an OleTx multiplexing connection, as specified in HYPERLINK "[MS-CMP].pdf" [MS-CMP], which is in turn layered on top of the OleTx transports infrastructure, as specified in HYPERLINK "[MS-CMPO].pdf" [MS-CMPO]. In this example, it is assumed that an [MS-CMPO] session has been established between the Application Role Implementation and its transaction coordinator. Messages are sent from the Application Role Implementation to the transaction coordinator and vice versa by submitting a MESSAGE_PACKET ( HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] (section HYPERLINK "[MS-DTCO].pdf" 2.2.4.1 HYPERLINK "[MS-DTCO].pdf" )) to the underlying OleTx multiplexing layer, as specified in [MS-CMP].
This packet sequence is initiated by starting a connection on a transport session between an Application Role Implementation and a transaction coordinator.
CONNTYPE_TXUSER_EXTENDEDWHEREABOUTS: The packet sequence starts when the Application Role Implementation initiates a connection with its transaction coordinator using CONNTYPE_TXUSER_EXTENDEDWHEREABOUTS.
Field Value Value description MsgTag0x00000005MTAG_CONNECTION_REQfIsMaster0x000000011dwConnectionId0x000000011dwUserMsgType0x0000003DCONNTYPE_TXUSER_EXTENDEDWHEREABOUTSdwcbVarLenData0x000000000dwReserved1 0xCD64CD64dwReserved1: 0xcd64cd64The Application Role Implementation then sends a HYPERLINK "[MS-DTCO].pdf" TXUSER_EXTENDEDWHEREABOUTS_MTAG_GET user message to the transaction coordinator.
FieldValueValue descriptionMsgTag0x00000FFFMTAG_USER_MESSAGEfIsMaster0x000000011dwConnectionId0x000000011dwUserMsgType0x00005A01TXUSER_EXTENDEDWHEREABOUTS_MTAG_GETdwcbVarLenData0x000000000dwReserved10xCD64CD64dwReserved1: 0xcd64cd64When the transaction coordinator receives the TXUSER_EXTENDEDWHEREABOUTS_MTAG_GET message from the Application Role Implementation, the transaction coordinator will send a TXUSER_EXTENDEDWHEREABOUTS_MTAG_GOT user message to the Application Role Implementation containing an array of SExtendedEndpointInfo structures, as described in HYPERLINK "[MS-DTCO].pdf" [MS-DTCO] sections HYPERLINK "[MS-DTCO].pdf" 2.2.5.8 and HYPERLINK "[MS-DTCO].pdf" 2.2.5.9.
FieldValueValue descriptionMsgTag0x00000FFFMTAG_USER_MESSAGEfIsMaster0x000000000dwConnectionId0x000000011dwUserMsgType0x00005A02TXUSER_EXTENDEDWHEREABOUTS_MTAG_GOTdwcbVarLenData0x0000005888dwReserved10xCD64CD64dwReserved1: 0xcd64cd64dwProtocolCount0x000000011tmprotDescribed0x00000004TmProtocolExtendedcbTmProtocolData0x0000004C76guidProtocolExtension0xCC228CF4
0x43FCA9C8
0x65858182
0xF28958EB{cc228cf4-a9c8-43fc-8281-8565eb5889f2}rgbProtocolExtensionData0xA00E0201
0x1000000F
0x1500000E
0x63616D00
0x656E6968
0x742E315F
0x75706D65
0x6F2E6972
0x000B6772
0x74617357
0x76726553
0x09656369
0x43414D00
0x454E4948
0x0003315FWhen the Application Role Implementation gets the TXUSER_EXTENDEDWHEREABOUTS_MTAG_GOT response from the transaction coordinator, no more user messages may be sent on this connection and the Application Role Implementation initiates the disconnect sequence.
4.1.2 Obtaining the WS-AtomicTransaction Activation Service Endpoints of the Transaction Coordinator
After obtaining an array of SExtendedEndpointInfo structures, the application then iterates through the array of structures. If the guidProtocolExtension is equal to the HYPERLINK \l "z6658f995e0b4453d953b1448587b153a" WSAT_ProtocolGuid (cc228cf4-a9c8-43fc-8281-8565eb5889f2), then the associated rgbProtocolExtensionData is an HYPERLINK \l "zf5ffd4c10361406aa3695e667acff9a0" ExtendedWhereabouts structure. The application decodes the ExtendedWhereabouts structure as follows.
FieldValueValue descriptionMajorVersion0x011MinorVersion0x02Minor Version 2ProtocolFlags0x0E14HttpsPort0x00000FA04000MaxTimeout0x00000E103600HostName.cbCharArray0x001521HostName.szCharArray0x6863616D
0x5F656E69
0x65742E31
0x7275706D
0x726F2E69
0x67machine_1.tempuri.orgBasePath.cbCharArray0x000B11BasePath.szCharArray0x74617357
0x76726553
0x656369WsatServiceNodeName.cbCharArray0x00099NodeName.szCharArray0x4843414D
0x5F454E49
0x31MACHINE_1SupportedProtocols0x0003V1.0 | V1.1The application then translates the ExtendedWhereabouts structure into a list of Activation Service Endpoints, as specified in section HYPERLINK \l "z6e240b7eb6f8428aa591628345672475" 2.2.2.3:
HYPERLINK \l "z1033be132bcc4dbcb474c83d7760ca94" HTTPS Activation Service Version 1.0 X.509 URI: https://machine_1.tempuri.org:4000/WsatService/Activation/Coordinator/
HYPERLINK \l "zbde9ec5cb51d4315815f343a0770eb91" HTTPS Activation Service Version 1.1 X.509 URI: https://machine_1.tempuri.org:4000/WsatService/Activation/Coordinator11/
HYPERLINK \l "ze3176a4c8e3b49daa77e4098eff268e2" HTTPS Activation Service Version 1.0 SPNEGO URI: https://machine_1.tempuri.org:4000/WsatService/Activation/Coordinator/Remote/
HYPERLINK \l "z9f502a9f6b9d4c81a93526c6a963aa4d" HTTPS Activation Service Version 1.1 SPNEGO URI: https://machine_1.tempuri.org:4000/WsatService/Activation/Coordinator11/Remote/
4.2 Propagating and Committing a Transaction Example
In this example, a client application propagates and commits a transaction with a server application using the WS-AtomicTransaction protocol, as described in section HYPERLINK \l "z9a644d493ac24ae68d3c54bcee5d5552" 1.3.3.2.
In this example, it is assumed that a client application has obtained the HYPERLINK \l "zbde9ec5cb51d4315815f343a0770eb91" HTTPS Activation Service Version 1.1 X.509 URI for its transaction coordinator, as shown in section HYPERLINK \l "z1b7514f744e7439695e9d259b1c233b9" 4.1. It is also assumed that a server application has similarly obtained the HTTPS Activation Service Version 1.1 X.509 URI for its transaction coordinator.
4.2.1 Creating a CoordinationContext
The client application obtains a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element for a transaction from its transaction coordinator by sending the following CreateCoordinationContext SOAP message to the transaction coordinator's Activation Service URI. Because the message contains no CurrentCoordinationContext, the transaction coordinator will be the root transaction coordinator of a new transaction.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContext
urn:uuid:1a7acc0e-7e98-45bf-80ce-8053edc1368f
https://machine_1.tempuri.org:4000/ClientApp/
https://machine_1.tempuri.org:5555/WsatService/Activation/Coordinator11/
http://docs.oasis-open.org/ws-tx/wsat/2006/06
When the client application's transaction coordinator receives the CreateCoordinationContext SOAP message, it creates a CoordinationContext Element for a new transaction. The new transaction contains its RegistrationService URI, a HYPERLINK \l "z3ab023a1196f4e15b8b9f1f6272b0829" RegisterInfo Element reference parameter, and a HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" CoordinationContextAnyElementType. The transaction coordinator then returns the CoordinationContext Element in the body of a CreateCoordinationContextResponse SOAP message and sends the message to the client application's ReplyTo URI.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContextResponse
urn:uuid:1a7acc0e-7e98-45bf-80ce-8053edc1368f
https://machine_1.tempuri.org:4000/ClientApp/
urn:uuid:4413663a-b7f1-4001-8956-7af04265103b
60000
http://docs.oasis-open.org/ws-tx/wsat/2006/06
https://machine_1.tempuri.org:5555/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
0
4413663a-b7f1-4001-8956-7af04265103b
4.2.2 Registering for Completion
After the client application obtains a HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element for a transaction, it then registers for Completion Protocol by sending a Register SOAP message to the transaction coordinator's Registration Service URI contained in the CoordinationContext Element returned by its transaction coordinator. The client application specifies the Protocol Identifier and its Participant Protocol Service URI in the HYPERLINK \l "z6ed10eaa2ef94e1fbb018e4d601ff572" Register Element contained in the body of the SOAP message.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/Register
urn:uuid:2defe157-59a5-4d38-9495-3b1a3696f2d9
https://machine_1.tempuri.org:4000/ClientApp/
https://machine_1.tempuri.org:5555/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Completion
https://machine_1.tempuri.org:4000/ClientApp/
When the client application's transaction coordinator receives the Register SOAP message, the transaction coordinator creates a HYPERLINK \l "za3bc61584a44474989f211530c46d1b9" RegisterResponse Message SOAP message, specifying its Completion Protocol Coordinator Protocol Service URI with an HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" Enlistment Element as a reference parameter and sends the message to the client application.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/RegisterResponse
urn:uuid:2defe157-59a5-4d38-9495-3b1a3696f2d9
https://machine_1.tempuri.org:4000/ClientApp/
https://machine_1.tempuri.org:5555/WsatService/Completion/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
4.2.3 Propagating the Transaction
After registering for completion ( HYPERLINK \l "z729352c7b7c04a0a9636737b39f7d2f8" 4.2.2), the client application sends a HYPERLINK \l "zd7aad62d5271468bb74a8c74475b0be7" FlowTransaction Message to the server application containing the HYPERLINK \l "zb5708d39c3b14b509ab20376af44578d" CoordinationContext Element (returned as shown in section HYPERLINK \l "z38d3de98c00a404c9a38af2d648f3567" 4.2.1) as a SOAP header in the message.
http://tempuri.org/FlowTransaction
urn:uuid:5973043c-0ed7-4c2a-aad9-700e446a8dbf
http://www.w3.org/2005/08/addressing/none
urn:uuid:4413663a-b7f1-4001-8956-7af04265103b
59904
http://docs.oasis-open.org/ws-tx/wsat/2006/06
https://machine_1.tempuri.org:5555/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
0
4413663a-b7f1-4001-8956-7af04265103b
https://machine_2.tempuri.org:8000/AppServer/
When the server application receives the FlowTransaction Message, it creates a CreateCoordinationContext SOAP message and inserts the CoordinationContext Element from the client application's FlowTransaction Message. The server application then sends the CreateCoordinationContext message to its transaction coordinator's Activation Service URI.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContext
https://machine_2.tempuri.org:5432/WsatService/Activation/Coordinator11/
urn:uuid:2e946e0a-e0cd-48c9-a065-79b43a70c4fb
https://machine_2.tempuri.org:8000/AppServer/
urn:uuid:4413663a-b7f1-4001-8956-7af04265103b
59904
http://docs.oasis-open.org/ws-tx/wsat/2006/06
https://machine_1.tempuri.org:5555/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
0
4413663a-b7f1-4001-8956-7af04265103b
http://docs.oasis-open.org/ws-tx/wsat/2006/06
When the server application's transaction coordinator receives the CreateCoordinationContext SOAP message from the server application, the transaction coordinator creates a Register SOAP message specifying the ProtocolIdentifier (Durable2PC), its Participant Protocol Service URI with an HYPERLINK \l "z7ff5e2a212954957a03f90ce0d8da5c7" Enlistment Element reference parameter, and a HYPERLINK \l "zfccc7a13cfc54e0f8fe1105b35534265" Loopback Element in the HYPERLINK \l "z6ed10eaa2ef94e1fbb018e4d601ff572" Register Element contained in the body of the SOAP message. The Activation Service's transaction coordinator then sends the Register SOAP message to the RegistrationService URI contained in the CoordinationContext Element.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/Register
https://machine_1.tempuri.org:5555/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
urn:uuid:27d5656b-6ea7-4094-8294-116e264ffae2
https://machine_2.tempuri.org:5432/WsatService/67b7e957-913c-4604-8d68-d5319cbeaa6c
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Durable2PC
https://machine_2.tempuri.org:5432/WsatService/TwoPhaseCommit/Participant11/
1aea41b1-ebc8-42ac-9232-bf56b47479ca
f30ea6e8-8cf7-4ac7-9281-ca8b5c5341a5
When the root transaction coordinator receives the Register SOAP message from the Activation Service's transaction coordinator, the root transaction coordinator creates a HYPERLINK \l "za3bc61584a44474989f211530c46d1b9" RegisterResponse Message SOAP message, specifying its Completion Protocol Coordinator Protocol Service URI with an Enlistment Element as a reference parameter and sends the message to the Activation Service's transaction coordinator ReplyTo URI.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/RegisterResponse
urn:uuid:27d5656b-6ea7-4094-8294-116e264ffae2
https://machine_2.tempuri.org:5432/WsatService/67b7e957-913c-4604-8d68-d5319cbeaa6c
https://machine_1.tempuri.org:5555/WsatService/TwoPhaseCommit/Coordinator11/
fcec4cc9-94dd-4376-9ba1-12efafd7d1e5
When the Activation Service's transaction coordinator receives the RegisterResponse Message SOAP message from the root transaction coordinator, the Activation Service's transaction coordinator creates a new CoordinationContext Element for the CoordinationContext Element sent to it by the Activation Service. The new CoordinationContext Element specifies its RegistrationService URI with a HYPERLINK \l "z3ab023a1196f4e15b8b9f1f6272b0829" RegisterInfo Element reference parameter and a HYPERLINK \l "z6aeb1c0fe0c24c8b9108a72e1065545e" CoordinationContextAnyElementType Complex Type. The Activation Service's transaction coordinator then inserts the CoordinationContext Element in the body of a CreateCoordinationContextResponse SOAP message and sends the message to the server application's ReplyTo URI.
http://docs.oasis-open.org/ws-tx/wscoor/2006/06/CreateCoordinationContextResponse
urn:uuid:2e946e0a-e0cd-48c9-a065-79b43a70c4fb
https://machine_2.tempuri.org:8000/AppServer/
urn:uuid:4413663a-b7f1-4001-8956-7af04265103b
59904
http://docs.oasis-open.org/ws-tx/wsat/2006/06
https://machine_2.tempuri.org:5432/WsatService/Registration/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
0
4413663a-b7f1-4001-8956-7af04265103b
When the server application receives the CreateCoordinationContextResponse SOAP message from its transaction coordinator, the server application is enabled to register for Volatile2PC or Durable2PC Protocol or to flow the transaction to another Activation Service.
4.2.4 Completing the Transaction
In this example, the client application commits the transaction. The client application creates a Completion Protocol Commit SOAP message and sends the message to its transaction coordinator's Completion Protocol Service URI.
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Commit
https://machine_1.tempuri.org:4000/ClientApp/
https://machine_1.tempuri.org:5555/WsatService/Completion/Coordinator11/
4413663a-b7f1-4001-8956-7af04265103b
When the root transaction coordinator receives the Commit SOAP message, the transaction coordinator begins Two-Phase Commit Protocol processing. In this example, there are no Participants registered for the Volatile Two-Phase Commit Protocol, therefore the transaction coordinator begins Durable Two-Phase Commit Protocol processing.
In this example, the root transaction coordinator has one registered participant for the Durable Two-Phase Commit Protocol: the server application's transaction coordinator. The root transaction coordinator creates a Durable Two-Phase Commit Protocol Prepare SOAP message and sends the message to the subordinate transaction coordinator's Two-Phase Commit Participant Protocol Service URI.
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Prepare
https://machine_1.tempuri.org:5555/WsatService/TwoPhaseCommit/Coordinator11/
:Enlistment mstx:protocol="3" xmlns:mstx="http://schemas.microsoft.com/ws/2006/02/transactions">fcec4cc9-94dd-4376-9ba1-12efafd7d1e5
http://www.w3.org/2005/08/addressing/none
https://machine_2.tempuri.org:5432/WsatService/TwoPhaseCommit/Participant11/
1aea41b1-ebc8-42ac-9232-bf56b47479ca
When the server application's transaction coordinator receives the Prepare SOAP message from the root transaction coordinator, the server application creates a Durable Two-Phase Commit Protocol Prepared SOAP message and sends the message to the root transaction coordinator's Two-Phase Commit Coordinator Protocol Service URI.
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Prepared
https://machine_2.tempuri.org:5432/WsatService/TwoPhaseCommit/Participant11/
1aea41b1-ebc8-42ac-9232-bf56b47479ca
http://www.w3.org/2005/08/addressing/none
https://machine_1.tempuri.org:5555/WsatService/TwoPhaseCommit/Coordinator11/
fcec4cc9-94dd-4376-9ba1-12efafd7d1e5
When the root transaction coordinator receives the Prepared SOAP message from the server application's transaction coordinator, the root transaction coordinator decides to commit the transaction.
The root transaction coordinator then creates a Completion Protocol Committed SOAP message and sends the message to the client application's HYPERLINK \l "z4" Participant Completion Protocol Service URI.
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Committed
https://machine_1.tempuri.org:4000/ClientApp/
The root transaction coordinator then creates a Durable Two-Phase Commit Protocol Commit SOAP message and sends the message to the subordinate transaction coordinator's Two-Phase Commit Participant Protocol Service URI.
http://docs.oasis-open.org/ws-tx/wsat/2006/06/Commit
https://machine_1.tempuri.org:5555/WsatService/TwoPhaseCommit/Coordinator11/
fcec4cc9-94dd-4376-9ba1-12efafd7d1e5
http://www.w3.org/2005/08/addressing/none
https://machine_2.tempuri.org:5432/WsatService/TwoPhaseCommit/Participant11/
1aea41b1-ebc8-42ac-9232-bf56b47479ca
When the server application's transaction coordinator receives the Commit SOAP message from the root transaction coordinator, the subordinate transaction coordinator creates a Durable Two-Phase Commit Protocol Committed SOAP message and sends the message to the root transaction coordinator's Two-Phase Commit Coordinator Protocol Service URI.
M Ц Ч п c n 2 C М Ф ╦
╠
" # + , g h y z c d Л М Ю Я б м Э Ю ╧ ╨ ь э я < R ї √
; < b c Ч Ш ▌ ▐ X Y Ю Я ф х * + p q ╢ ╖ № ¤ B C w x ╜ ╛ D E Е Ж ╦ ╠ №Ў№Ў№Ў№Ў№Ў№ю№юш█№ю№юш█№ю№юш█№Ў№ю№юш█№Ў№Ў№Ў№╙╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№╧№hжVX h╢^2 h╢^2 5Бj h(*ц h╢^2 0J▄ U
h╢^2 0J▄ j h╢^2 U
h╢^2 0Jh h╢^2 R L M Ч c 2 М б я < ї №
# 2 ; · ї Ё ы ы ы ы ы ы Ё Ё ц ▌ ▌ ▌ ▌ ■ $If gdH┴ gd╢^2 [ gd╢^2 gd╢^2 gd╢^2 gd╢^2 ; < G K , # # $If gdH┴ ╙ kd $$If ЦV 4╓ ╓\ ¤є
oE# ╓
t р╓( ┘┘┘ ┘┘┘ ┘┘┘ ┘┘┘ ╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( ┘┘┘ ┘┘┘ ┘┘┘ ┘┘┘ yt╢^2 K M b c n r x Ч Ў Ў ? Ў Ў Ў Ў ╢ kd$ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 $If gdH┴ Ч Ш г й │ ▌ H ? ? ? ? $If gdH┴ ╢ kdэ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ▌ ▐ щ э є H ? ? ? ? $If gdH┴ ╢ kd╢ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 $ . X H ? ? ? ? $If gdH┴ ╢ kd $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 X Y d j t Ю H ? ? ? ? $If gdH┴ ╢ kdH $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 Ю Я к ░ ║ ф H ? ? ? ? $If gdH┴ ╢ kd $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ф х Ё Ў * H ? ? ? ? $If gdH┴ ╢ kd┌ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 * + 6 < F p H ? ? ? ? $If gdH┴ ╢ kdг $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 p q | В М ╢ H ? ? ? ? $If gdH┴ ╢ kdl $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╢ ╖ ┬ ╚ ╥ № H ? ? ? ? $If gdH┴ ╢ kd5 $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 № ¤ B H ? ? ? ? $If gdH┴ ╢ kd■ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 B C N R X w H ? ? ? ? $If gdH┴ ╢ kd╟ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 w x Г Й У ╜ H ? ? ? ? $If gdH┴ ╢ kdР
$$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╜ ╛ ╔ ╧ ┘ H ? ? ? ? $If gdH┴ ╢ kdY $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 D H ? ? ? ? $If gdH┴ ╢ kd" $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 D E P T Z Е H ? ? ? ? $If gdH┴ ╢ kdы $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 Е Ж С Ч б ╦ H ? ? ? ? $If gdH┴ ╢ kd┤
$$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╦ ╠ ╫ ▌ ч H ? ? ? ? $If gdH┴ ╢ kd} $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ! ' T H ? ? ? ? $If gdH┴ ╢ kdF $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ▀ р х ц ч ш ! ! ! ! ! ! ! 3! 4! 5! 6! 7! 8! 9! :! ;! W! X! Y! Z! h! i! j! Д! №°Ё°Ё▌╧╞╧░▌╧╞в╞Св╞в▌w▌╧╞╧a▌╧╞в╞ *БjЩ hЩh] h╢^2 0J▄ UmH nH u 2h╢^2 h╢^2 5БCJ KH OJ PJ QJ aJ mH nH u Бj h╢^2 UmH nH u j h╢^2 UmH nH u *БjЯ hЩh] h╢^2 0J▄ UmH nH u h╢^2 mH nH uhЩh] h╢^2 0J▄ mH nH u$j hЩh] h╢^2 0J▄ UmH nH u j h╢^2 Uh╢^2 hжVX T U ` d n ╗ H ? ? ? ? $If gdH┴ ╢ kd $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╗ ╝ ╟ ╦ ╒ " H ? ? ? ? $If gdH┴ ╢ kd╪ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 " # . 2 8 e H ? ? ? ? $If gdH┴ ╢ kdб $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 e f q u ╠ H ? ? ? ? $If gdH┴ ╢ kdj $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╠ ═ ╪ ▄ ц 3 H ? ? ? ? $If gdH┴ ╢ kd3 $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 3 4 ? C M Ъ H ? ? ? ? $If gdH┴ ╢ kd№ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 Ъ Ы ж к ┤ H ? ? ? ? $If gdH┴ ╢ kd┼ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2
G H ? ? ? ? $If gdH┴ ╢ kdО $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 G H S W a о H ? ? ? ? $If gdH┴ ╢ kdW $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 о п ║ ╛ ─ ё H ? ? ? ? $If gdH┴ ╢ kd $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ё Є ¤ X H ? ? ? ? $If gdH┴ ╢ kdщ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 X Y d h r ┐ H ? ? ? ? $If gdH┴ ╢ kd▓ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ┐ └ ╦ ╧ ┘ & H ? ? ? ? $If gdH┴ ╢ kd{ $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 & ' 2 6 @ Н H ? ? ? ? $If gdH┴ ╢ kdD $$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 Н О Щ Э г ╙ H ? ? ? ? $If gdH┴ ╢ kd
$$If ЦV ╓ ╓\ ¤є
oE#
t р╓0 Ў(#6Ў ╓ ╓ ╓ ╓ 4╓ 4╓
Р aЎн p╓( yt╢^2 ╙ ╘ ╒ ╓ ▀ 9! К! H C > > <