Draft SOAP One-way MEP

"David Orchard" <[email protected]> Thu, 30 Mar 2006 17:01:13 -0800
Newsgroups gmane.text.xml.distributed
Message-ID <[email protected]>
Hi all,

 

I spent today working on the SOAP One-way MEP including a buncho grungy
ed work of getting it in xmlspec.  It is attached in html and xmlspec,
as well as an updated state transition diagram.  

 

There are a few decisions of interest in this document.  

 

One decision is the name of the message property at the sender and the
receiver.  There are 2 choices, and I picked the first:

1) Retain request-response mep compatibility which means "outbound"
message at sender and "inbound" message at receiver

2) Lose request-response mep compatibility and change to just "message"
at sender and receiver.

 

Another decision is whether to have Sending and Receiving states, or
just collapse into Init (as proposed by DavidH in
http://lists.w3.org/Archives/Public/xml-dist-app/2006Mar/att-0037/one-wa
y-MEP.htm). I chose to retain the explicit states for backwards
compatibility with req-resp.

 

Another decision is the name.  I propose the "SOAP One-way MEP".  I
don't think this is a "SOAP 1.2 One-way MEP". 

 

Small ed point: I know the std diagram is poorly listed as an example.
Xmlspec 2.2 lost the caption child of graphic and people are using the
example/graphic hack currently.

 

Cheers,

Dave

.
One-wayMEPSTD.png (image/png, 16.4 KB) - not displayed
one-way-mep.html (text/html, 20.8 KB)
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="en"><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/><title>SOAP One-way MEP</title><style type="text/css">
code           { font-family: monospace; }

div.constraint,
div.issue,
div.note,
div.notice     { margin-left: 2em; }

li p           { margin-top: 0.3em;
                 margin-bottom: 0.3em; }

div.exampleInner pre { margin-left: 1em;
                       margin-top: 0em; margin-bottom: 0em}
div.exampleOuter {border: 4px double gray;
                  margin: 0em; padding: 0em}
div.exampleInner { background-color: #d5dee3;
                   border-top-width: 4px;
                   border-top-style: double;
                   border-top-color: #d3d3d3;
                   border-bottom-width: 4px;
                   border-bottom-style: double;
                   border-bottom-color: #d3d3d3;
                   padding: 4px; margin: 0em }
div.exampleWrapper { margin: 4px }
div.exampleHeader { font-weight: bold;
                    margin: 4px}
</style><link rel="stylesheet" type="text/css" href="http://www.w3.org/StyleSheets/TR/base.css"/></head><body><div class="head">
<h1><a name="title" id="title"/>SOAP One-way MEP</h1>
<h2><a name="w3c-doctype" id="w3c-doctype"/>Editors Copy $Date: 2006/03/30 09:53:43 $ 30 March 2006</h2><dl><dt>This version:</dt><dd><a href="/">/</a></dd><dt>Editor:</dt><dd>David Orchard, BEA Systems</dd></dl><p class="copyright"><a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright">Copyright</a> © 2006 <a href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>®</sup> (<a href="http://www.lcs.mit.edu/"><abbr title="Massachusetts Institute of Technology">MIT</abbr></a>, <a href="http://www.inria.fr/"><abbr lang="fr" title="Institut National de Recherche en Informatique et Automatique">INRIA</abbr></a>, <a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved. W3C <a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Legal_Disclaimer">liability</a>, <a href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#W3C_Trademarks">trademark</a>, <a href="http://www.w3.org/Consortium/Legal/copyright-documents-19990405">document use</a>, and <a href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">software licensing</a> rules apply.</p></div><hr/><div>
<h2><a name="abstract" id="abstract"/>Abstract</h2><p>SOAP Version 1.2 provides a request-response MEP and a response-only MEP.  This, the SOAP One-way MEP, provides a one-way MEP.   </p></div><div>
<h2><a name="status" id="status"/>Status of this Document</h2><p><strong>This document is an editors' copy that has
        no official standing.</strong></p><p><em>This section describes the status of this document
          at the time of its publication. Other documents may
          supersede this document. The latest status of this document
          series is maintained at the W3C.</em></p></div><div class="toc">
<h2><a name="contents" id="contents"/>Table of Contents</h2><p class="toc">1 <a href="#intro">Introduction</a><br/>    1.1 <a href="#notcon">Notational Conventions</a><br/>2 <a href="#singlereqmep">SOAP One-way Message Exchange Pattern</a><br/>    2.1 <a href="#mepname">SOAP Feature Name</a><br/>    2.2 <a href="#bindinfdesc">Description</a><br/>    2.3 <a href="#bindformdesc">State Machine Description</a><br/>    2.4 <a href="#bindfaulthdn">Fault Handling</a><br/>3 <a href="#refs">References</a><br/>    3.1 <a href="#refs-norm">Normative References</a><br/>    3.2 <a href="#refs-inform">Informative References</a><br/></p>
<h3><a name="appendices" id="appendices"/>Appendix</h3><p class="toc">A <a href="#changelog">Change Log</a> (Non-Normative)<br/></p></div><hr/><div class="body"><div class="div1">
<h2><a name="intro" id="intro"/>1 Introduction</h2><p>SOAP Version 1.2 provides a request-response MEP and a response-only MEP.  This, the SOAP One-way MEP, provides a one-way MEP.   
			</p><div class="div2">
<h3><a name="notcon" id="notcon"/>1.1 Notational Conventions</h3><p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
	  "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
	  and "OPTIONAL" in this document are to be interpreted as
	  described in RFC 2119 <a href="#RFC2119">[RFC 2119]</a>.</p><p>With the exception of examples and sections explicitly marked
    	as "Non-Normative", all parts of this specification are
    	normative.</p></div></div><div class="div1">
<h2><a name="singlereqmep" id="singlereqmep"/>2 SOAP One-way Message Exchange Pattern</h2><p>This section defines the message exchange pattern (MEP) called "One-way". The
	  description is an abstract presentation of the operation of
	  this MEP. It is not intended to describe a real
	  implementation or to suggest how a real implementation should
	  be structured.</p><div class="div2">
<h3><a name="mepname" id="mepname"/>2.1 SOAP Feature Name</h3><p>This message exchange pattern is identified by
	  the URI (see SOAP 1.2 Part 1 <a href="#SOAP-PART1">[SOAP Part 1]</a><a href="/#procsoapmsgs">SOAP Features</a>):</p><ul><li><p>"http://www.w3.org/2006/03/soap/mep/one-way/"</p></li></ul></div><div class="div2">
<h3><a name="bindinfdesc" id="bindinfdesc"/>2.2 Description</h3><p>The SOAP One-way MEP defines a
	    pattern for the exchange of a SOAP message. In the absence of failure in the underlying
	    protocol, this MEP consists of one SOAP message.</p><p>Abnormal operation during a one-way message exchange
       might be caused by a failure to transfer the message or a
       failure at the receiving SOAP node to process the
       message.  Such
       failures might be silent at either or both of the sending and
       recieving SOAP nodes involved, or might result in the generation of a SOAP 
       or binding-specific fault (see <a href="#bindfaulthdn"><b>2.4 Fault Handling</b></a>).
       Also, during abnormal operation
       each SOAP node involved in the message exchange might differ in
       its determination of the successful completion of the message
       exchange. </p><p>The scope of a one-way MEP is limited to
       the exchange of a message between
       one sending and one receiving SOAP node. Implementations MAY choose
       to support multiple meps at the same time.</p></div><div class="div2">
<h3><a name="bindformdesc" id="bindformdesc"/>2.3 State Machine Description</h3><p>The One-way MEP defines a set of properties described in <b><a href="#tabreqresprops">???</a></b>.</p><table border="1" id="tabreqresprops"><caption>Property definitions for One-way MEP</caption><tbody><tr><th rowspan="1" colspan="1">Property Name</th><th rowspan="1" colspan="1">Property Description</th><th rowspan="1" colspan="1">Property Type</th></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/OutboundMessage</code></td><td rowspan="1" colspan="1">An abstract structure that represents the current
		  outbound message in the message exchange. This
		  abstracts both SOAP Envelope and any other
		  information structures that are transferred along
		  with the envelope.</td><td rowspan="1" colspan="1">Not specified</td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/InboundMessage</code></td><td rowspan="1" colspan="1">An abstract structure that represents the current
		  inbound message in the message exchange. This
		  abstracts both SOAP Envelope and any other
		  information structures that are transferred along
		  with the envelope.</td><td rowspan="1" colspan="1">Not specified</td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/ImmediateDestination</code></td><td rowspan="1" colspan="1">The identifier of the immediate destination of an
		  outbound message.</td><td rowspan="1" colspan="1">xs:anyURI</td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/ImmediateSender</code></td><td rowspan="1" colspan="1">The identifier of the immediate sender of an inbound
		  message.</td><td rowspan="1" colspan="1">xs:anyURI</td></tr></tbody></table><p>To initiate a message exchange conforming to the
	  One-way MEP, the sending SOAP node instantiates a
	  local message exchange context. <b><a href="#tabreqcon">???</a></b> describes how
	  the context is initialized.</p><table border="1" id="tabreqcon"><caption>Instantiation of a Message Exchange Context
              for a sending SOAP node</caption><tbody><tr><th rowspan="1" colspan="1">Property Name</th><th rowspan="1" colspan="1">Property Value</th><th rowspan="1" colspan="1">Notes</th></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code></td><td rowspan="1" colspan="1">"http://www.w3.org/2006/03/soap/mep/one-way/"</td><td rowspan="1" colspan="1"> </td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code></td><td rowspan="1" colspan="1">"None"</td><td rowspan="1" colspan="1">
								A relative URI whose 
      base URI is the value of
      <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code></td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code></td><td rowspan="1" colspan="1">"SendingSOAPNode"</td><td rowspan="1" colspan="1">
							A relative URI whose 
      base URI is the value of
      <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code></td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State</code></td><td rowspan="1" colspan="1">"Init"</td><td rowspan="1" colspan="1">
								A relative URI whose base URI is the value of
	  <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code></td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/OutboundMessage</code></td><td rowspan="1" colspan="1">An abstraction of the One-way message </td><td rowspan="1" colspan="1"> </td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/mep/ImmediateDestination</code></td><td rowspan="1" colspan="1">An identifier (URI) that denotes the receiving SOAP node </td><td rowspan="1" colspan="1"> </td></tr></tbody></table><p>There may be other properties related to the operation of
           the message exchange context instance. Such properties are
           initialized according to their own feature specifications.
           </p><p>Once the message exchange context is initialized, control
           of the context is passed to a (conforming) local binding
           instance. </p><p>The diagram below shows the logical state transitions at
           the sending and receiving SOAP nodes during the lifetime
           of the message exchange. At each SOAP node, the local binding
           instance updates (logically) the value of the
           <code>http://www.w3.org/2003/05/soap/bindingFramework/
           ExchangeContext/State</code> property to reflect the current
           state of the message exchange. The state names are relative
           URIs, relative to a base URI value carried in the
           <code>http://www.w3.org/2003/05/soap/bindingFramework/
           ExchangeContext/Role</code> property of the local message
           exchange context.</p><div class="exampleOuter">
<div class="exampleHead">Example: One-way MEP State Transition Diagram</div><img src="One-wayMEPSTD.png" alt="One-way MEP State Transition Diagram."/></div><p>When the local binding instance at the receiving SOAP
           node starts to receive an inbound One-way message, it
           (logically) instantiates a message exchange context. <b><a href="#tabrescon">???</a></b>
           describes the properties that the binding initializes as
           part of the context's instantiation.</p><table border="1" id="tabrescon"><caption>Instantiation of Message Exchange Context for
             an inbound One-way message at a receiving SOAP node</caption><tbody><tr><th rowspan="1" colspan="1">Property Name</th><th rowspan="1" colspan="1">Property Value</th><th rowspan="1" colspan="1">Notes</th></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code></td><td rowspan="1" colspan="1">"http://www.w3.org/2006/03/soap/mep/one-way/"</td><td rowspan="1" colspan="1">Initialized as early as possible during the life cycle
              of the message exchange.</td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code></td><td rowspan="1" colspan="1">"None"</td><td rowspan="1" colspan="1">A relative URI whose base URI is the value of <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code></td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code></td><td rowspan="1" colspan="1">"ReceivingSOAPNode"</td><td rowspan="1" colspan="1">
								A relative URI whose base URI is the value of <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</code>
								
								Initialized as early
              as possible during the life cycle of the message
              exchange.
							</td></tr><tr><td rowspan="1" colspan="1"><code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State</code></td><td rowspan="1" colspan="1">"Init"</td><td rowspan="1" colspan="1">A relative URI whose base URI is the
			  value of <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</code></td></tr></tbody></table><p>When the sending and receiving SOAP nodes transition between
	 states, the local binding instance (logically) updates a number of
	 properties. <b><a href="#tabreqstatetrans">???</a></b> and <b><a href="#tabresstatetrans">???</a></b> describe these updates for the sending
	 and the receiving SOAP nodes, respectively.</p><table width="100%" border="1" id="tabreqstatetrans"><caption>Sending SOAP Node State Transitions</caption><tbody><tr><th valign="top" rowspan="1" colspan="1">CurrentState</th><th valign="top" rowspan="1" colspan="1">Transition Condition</th><th valign="top" rowspan="1" colspan="1">NextState</th><th valign="top" rowspan="1" colspan="1">Action</th></tr><tr><td valign="top" rowspan="1" colspan="1">"Init"</td><td valign="top" rowspan="1" colspan="1">Unconditional</td><td valign="top" rowspan="1" colspan="1">"Sending"</td><td valign="top" rowspan="1" colspan="1">Initiate transmission of message
		    abstracted in
		    <code>http://www.w3.org/2003/05/soap/mep/OutboundMessage</code>.</td></tr><tr><td valign="top" rowspan="2" colspan="1">"Sending"</td><td valign="top" rowspan="1" colspan="1">Message transmission failure</td><td valign="top" rowspan="1" colspan="1">"Fail"</td><td valign="top" rowspan="1" colspan="1">Set
		      <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code> to
		      "transmissionFailure"</td></tr><tr><td valign="top" rowspan="1" colspan="1">Completed sending message. </td><td valign="top" rowspan="1" colspan="1">"Success"</td><td valign="top" rowspan="1" colspan="1"> </td></tr></tbody></table><p> </p><table width="100%" border="1" id="tabresstatetrans"><caption>Receiving SOAP Node State Transitions</caption><tbody><tr><th valign="top" rowspan="1" colspan="1">CurrentState</th><th valign="top" rowspan="1" colspan="1">Transition Condition</th><th valign="top" rowspan="1" colspan="1">NextState</th><th valign="top" rowspan="1" colspan="1">Action</th></tr><tr><td valign="top" rowspan="1" colspan="1">"Init"</td><td valign="top" rowspan="1" colspan="1">Start receiving message</td><td valign="top" rowspan="1" colspan="1">"Receiving"</td><td valign="top" rowspan="1" colspan="1">Set
		      <code>http://www.w3.org/2003/05/soap/mep/ImmediateSender</code> to denote the sender of the message (if determinable).
		      Start making an abstraction of the message available in <code>http://www.w3.org/2003/05/soap/mep/InboundMessage</code>.
		      Pass control of message exchange context to SOAP processor.</td></tr><tr><td valign="top" rowspan="2" colspan="1">"Receiving"</td><td valign="top" rowspan="1" colspan="1">Message reception failure</td><td valign="top" rowspan="1" colspan="1">"Fail"</td><td valign="top" rowspan="1" colspan="1">Set
		      <code>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</code> to
		      "receptionFailure".</td></tr><tr><td valign="top" rowspan="1" colspan="1">Completed receiving message.</td><td valign="top" rowspan="1" colspan="1">"Success"</td><td valign="top" rowspan="1" colspan="1"> </td></tr></tbody></table></div><div class="div2">
<h3><a name="bindfaulthdn" id="bindfaulthdn"/>2.4 Fault Handling</h3><p>During the operation of the One-way MEP, the
	    participating SOAP nodes may generate SOAP faults.  This MEP makes no claims about the disposition or
           handling of SOAP faults generated by the sending SOAP node or the receiving SOAP node.</p></div></div><div class="div1">
<h2><a name="refs" id="refs"/>3 References</h2><div class="div2">
<h3><a name="refs-norm" id="refs-norm"/>3.1 Normative References</h3><dl><dt class="label"><a name="SOAP-PART2" id="SOAP-PART2"/>SOAP Part 2</dt><dd><a href="http://www.w3.org/TR/2003/REC-soap12-part2-20030624/">W3C Proposed Recommendation
	  "SOAP Version 1.2 Part 2: Adjuncts", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
	  Henrik Frystyk Nielsen, 24 June 2003</a>  (See http://www.w3.org/TR/2003/REC-soap12-part2-20030624/.)</dd><dt class="label"><a name="RFC2119" id="RFC2119"/>RFC 2119</dt><dd><a href="http://www.ietf.org/rfc/rfc2119.txt">IETF "RFC 2119:
	  Key words for use in RFCs to Indicate Requirement Levels",
	  S. Bradner, March 1997.</a>  (See http://www.ietf.org/rfc/rfc2119.txt.)</dd><dt class="label"><a name="RFC2396" id="RFC2396"/>RFC 2396</dt><dd><a href="http://www.ietf.org/rfc/rfc2396.txt">IETF "RFC 2396:
	  Uniform Resource Identifiers (URI): Generic Syntax",
	  T. Berners-Lee, R. Fielding, L. Masinter, August
	  1998.</a>  (See http://www.ietf.org/rfc/rfc2396.txt.)</dd></dl></div><div class="div2">
<h3><a name="refs-inform" id="refs-inform"/>3.2 Informative References</h3><dl><dt class="label"><a name="SOAP-PART0" id="SOAP-PART0"/>SOAP Part 0</dt><dd><a href="http://www.w3.org/TR/2003/REC-soap12-part0-20030624/">W3C Proposed Recommendation "SOAP Version 1.2 Part 0:
    	Primer", Nilo Mitra, 24 June 2003</a>  (See http://www.w3.org/TR/2003/REC-soap12-part0-20030624/.)</dd><dt class="label"><a name="SOAP-PART1" id="SOAP-PART1"/>SOAP Part 1</dt><dd><a href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/">W3C Proposed Recommendation
	  "SOAP Version 1.2 Part 1: Messaging
	  Framework", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
	  Henrik Frystyk Nielsen, 24 June 2003</a>  (See http://www.w3.org/TR/2003/REC-soap12-part1-20030624/.)</dd><dt class="label"><a name="CommentArchive" id="CommentArchive"/>XMLP Comments</dt><dd><a href="http://lists.w3.org/Archives/Public/xmlp-comments/">XML Protocol Comments Archive</a>  (See http://lists.w3.org/Archives/Public/xmlp-comments/.)</dd><dt class="label"><a name="DiscussionArchive" id="DiscussionArchive"/>XMLP Dist-App</dt><dd><a href="http://lists.w3.org/Archives/Public/xml-dist-app/">XML Protocol Discussion
	    Archive</a>  (See http://lists.w3.org/Archives/Public/xml-dist-app/.)</dd><dt class="label"><a name="XMLPCharter" id="XMLPCharter"/>XMLP Charter</dt><dd><a href="http://www.w3.org/2000/09/XML-Protocol-Charter">XML Protocol Charter</a>  (See http://www.w3.org/2000/09/XML-Protocol-Charter.)</dd><dt class="label"><a name="RFC2045" id="RFC2045"/>RFC 2045</dt><dd><a href="http://www.ietf.org/rfc/rfc2045.txt">IETF "RFC2045: Multipurpose Internet Mail
	    Extensions (MIME) Part One: Format of Internet Message
	    Bodies", N. Freed, N. Borenstein, November 1996.</a>  (See http://www.ietf.org/rfc/rfc2045.txt.)</dd><dt class="label"><a name="RFC2026" id="RFC2026"/>RFC 2026</dt><dd><a href="http://www.ietf.org/rfc/rfc2026.txt">IETF "RFC 2026:
	  The Internet Standards Process -- Revision 3", section
	  4.2.3, S. Bradner, October 1996.</a>  (See http://www.ietf.org/rfc/rfc2026.txt.)</dd></dl></div></div></div><div class="back"><div class="div1">
<h2><a name="changelog" id="changelog"/>A Change Log (Non-Normative)</h2><table border="1"><caption>Changes since candidate recommendation.</caption><thead><tr><th rowspan="1" colspan="1">Who</th><th rowspan="1" colspan="1">When</th><th rowspan="1" colspan="1">What</th></tr></thead><tbody><tr><td rowspan="1" colspan="1">DBO</td><td rowspan="1" colspan="1">20041208</td><td rowspan="1" colspan="1">Initial Revision</td></tr><tr><td rowspan="1" colspan="1">DBO</td><td rowspan="1" colspan="1">20060330</td><td rowspan="1" colspan="1">2nd Revision</td></tr></tbody></table></div></div></body></html>
one-way-mep.xml (text/xml, 18.9 KB)
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='xmlspec.xsl'?>
<!DOCTYPE spec PUBLIC "-//W3C//DTD Specification V2.2//EN" "xmlspec.dtd" [
	<!ENTITY % entities SYSTEM "entitiesedcopy.dtd">
	<!ENTITY wgmb SYSTEM "wgmb.txt">
	<!ENTITY prevwgmb SYSTEM "prevwgmb.txt">
	%entities;
	<!ENTITY status "Editors Copy $Date: 2006/03/30 09:53:43 $">
]>
<spec w3c-doctype="wd" role="editors-copy">
	<header>
		<title>SOAP One-way MEP</title>
		<w3c-designation>&w3c-designation;</w3c-designation>
		<w3c-doctype>&status;</w3c-doctype>
		<pubdate>
			<day>&draft.day;</day>
			<month>&draft.month;</month>
			<year>&draft.year;</year>
		</pubdate>
		<publoc>
			<loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="&dated;/">&dated;/</loc>
		</publoc>
		<!--		<latestloc>
			<loc xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.w3.org/TR/&shortname;/">http://www.w3.org/TR/&shortname;/</loc>
		</latestloc>
		-->
		<authlist>
			<author>
				<name>David Orchard</name>
				<affiliation>BEA Systems</affiliation>
			</author>
		</authlist>
		<abstract>
			<p>SOAP Version 1.2 provides a request-response MEP and a response-only MEP.  This, the SOAP One-way MEP, provides a one-way MEP.   </p>
		</abstract>
		<status>
			<p>
				<emph>This section describes the status of this document
          at the time of its publication. Other documents may
          supersede this document. The latest status of this document
          series is maintained at the W3C.</emph>
			</p>
		</status>
		<langusage>
			<language id="en">English</language>
		</langusage>
		<revisiondesc>
			<p>Last Modified: $Date: 2006/03/30 09:53:43 $ CET</p>
		</revisiondesc>
	</header>
	<body>
		<div1 id="intro">
			<head>Introduction</head>
			<p>SOAP Version 1.2 provides a request-response MEP and a response-only MEP.  This, the SOAP One-way MEP, provides a one-way MEP.   
			</p>
			<div2 id="notcon">
				<head>Notational Conventions</head>
				<p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
	  "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY",
	  and "OPTIONAL" in this document are to be interpreted as
	  described in RFC 2119 <bibref ref="RFC2119"/>.</p>
				<p>With the exception of examples and sections explicitly marked
    	as "Non-Normative", all parts of this specification are
    	normative.</p>
			</div2>
		</div1>
		<div1 id="singlereqmep">
			<head>SOAP One-way Message Exchange Pattern</head>
			<p>This section defines the message exchange pattern (MEP) called "One-way". The
	  description is an abstract presentation of the operation of
	  this MEP. It is not intended to describe a real
	  implementation or to suggest how a real implementation should
	  be structured.</p>
			<div2 id="mepname">
				<head>SOAP Feature Name</head>
				<p>This message exchange pattern is identified by
	  the URI (see SOAP 1.2 Part 1 <bibref ref="SOAP-PART1"/>
					<xspecref xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" href="&dated;/#procsoapmsgs">SOAP Features</xspecref>):</p>
				<ulist>
					<item>
						<p>
							<attval>http://www.w3.org/2006/03/soap/mep/one-way/</attval>
						</p>
					</item>
				</ulist>
			</div2>
			<div2 id="bindinfdesc">
				<head>Description</head>
				<p>The SOAP One-way MEP defines a
	    pattern for the exchange of a SOAP message. In the absence of failure in the underlying
	    protocol, this MEP consists of one SOAP message.</p>
				<p>Abnormal operation during a one-way message exchange
       might be caused by a failure to transfer the message or a
       failure at the receiving SOAP node to process the
       message.  Such
       failures might be silent at either or both of the sending and
       recieving SOAP nodes involved, or might result in the generation of a SOAP 
       or binding-specific fault (see <specref ref="bindfaulthdn"/>).
       Also, during abnormal operation
       each SOAP node involved in the message exchange might differ in
       its determination of the successful completion of the message
       exchange. </p>
				<p>The scope of a one-way MEP is limited to
       the exchange of a message between
       one sending and one receiving SOAP node. Implementations MAY choose
       to support multiple meps at the same time.</p>
			</div2>
			<div2 id="bindformdesc">
				<head>State Machine Description</head>
				<p>The One-way MEP defines a set of properties described in <specref ref="tabreqresprops"/>.</p>
				<table border="1" id="tabreqresprops">
					<caption>Property definitions for One-way MEP</caption>
					<tbody>
						<tr>
							<th>Property Name</th>
							<th>Property Description</th>
							<th>Property Type</th>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/OutboundMessage</att>
							</td>
							<td>An abstract structure that represents the current
		  outbound message in the message exchange. This
		  abstracts both SOAP Envelope and any other
		  information structures that are transferred along
		  with the envelope.</td>
							<td>Not specified</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/InboundMessage</att>
							</td>
							<td>An abstract structure that represents the current
		  inbound message in the message exchange. This
		  abstracts both SOAP Envelope and any other
		  information structures that are transferred along
		  with the envelope.</td>
							<td>Not specified</td>
						</tr>

						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/ImmediateDestination</att>
							</td>
							<td>The identifier of the immediate destination of an
		  outbound message.</td>
							<td>xs:anyURI</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/ImmediateSender</att>
							</td>
							<td>The identifier of the immediate sender of an inbound
		  message.</td>
							<td>xs:anyURI</td>
						</tr>
					</tbody>
				</table>
				<p>To initiate a message exchange conforming to the
	  One-way MEP, the sending SOAP node instantiates a
	  local message exchange context. <specref ref="tabreqcon"/> describes how
	  the context is initialized.</p>
				<table border="1" id="tabreqcon">
					<caption>Instantiation of a Message Exchange Context
              for a sending SOAP node</caption>
					<tbody>
						<tr>
							<th>Property Name</th>
							<th>Property Value</th>
							<th>Notes</th>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
							</td>
							<td>
								<attval>http://www.w3.org/2006/03/soap/mep/one-way/</attval>
							</td>
							<td>&nbsp;</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</att>
							</td>
							<td>
								<attval>None</attval>
							</td>
							<td>
								A relative URI whose 
      base URI is the value of
      <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
							</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</att>
							</td>
							<td>
								<attval>SendingSOAPNode</attval>
							</td>
							<td>
							A relative URI whose 
      base URI is the value of
      <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
							</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State</att>
							</td>
							<td>
								<attval>Init</attval>
							</td>
							<td>
								A relative URI whose base URI is the value of
	  <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</att>
							</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/OutboundMessage</att>
							</td>
							<td>An abstraction of the One-way message </td>
							<td>&nbsp;</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/mep/ImmediateDestination</att>
							</td>
							<td>An identifier (URI) that denotes the receiving SOAP node </td>
							<td>&nbsp;</td>
						</tr>
					</tbody>
				</table>
				<p>There may be other properties related to the operation of
           the message exchange context instance. Such properties are
           initialized according to their own feature specifications.
           </p>
				<p>Once the message exchange context is initialized, control
           of the context is passed to a (conforming) local binding
           instance. </p>
				<p>The diagram below shows the logical state transitions at
           the sending and receiving SOAP nodes during the lifetime
           of the message exchange. At each SOAP node, the local binding
           instance updates (logically) the value of the
           <att>http://www.w3.org/2003/05/soap/bindingFramework/
           ExchangeContext/State</att> property to reflect the current
           state of the message exchange. The state names are relative
           URIs, relative to a base URI value carried in the
           <att>http://www.w3.org/2003/05/soap/bindingFramework/
           ExchangeContext/Role</att> property of the local message
           exchange context.</p>
				<example id="fig-std">
					<head>One-way MEP State Transition Diagram</head>
					<graphic source="One-wayMEPSTD.png" alt="One-way MEP State Transition Diagram."/>
				</example>
				<p>When the local binding instance at the receiving SOAP
           node starts to receive an inbound One-way message, it
           (logically) instantiates a message exchange context. <specref ref="tabrescon"/>
           describes the properties that the binding initializes as
           part of the context's instantiation.</p>
				<table border="1" id="tabrescon">
					<caption>Instantiation of Message Exchange Context for
             an inbound One-way message at a receiving SOAP node</caption>
					<tbody>
						<tr>
							<th>Property Name</th>
							<th>Property Value</th>
							<th>Notes</th>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
							</td>
							<td>
								<attval>http://www.w3.org/2006/03/soap/mep/one-way/</attval>
							</td>
							<td>Initialized as early as possible during the life cycle
              of the message exchange.</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</att>
							</td>
							<td>
								<attval>None</attval>
							</td>
							<td>A relative URI whose base URI is the value of <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
							</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</att>
							</td>
							<td>
								<attval>ReceivingSOAPNode</attval>
							</td>
							<td>
								A relative URI whose base URI is the value of <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/ExchangePatternName</att>
								
								Initialized as early
              as possible during the life cycle of the message
              exchange.
							</td>
						</tr>
						<tr>
							<td>
								<att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/State</att>
							</td>
							<td>
								<attval>Init</attval>
							</td>
							<td>A relative URI whose base URI is the
			  value of <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/Role</att>
							</td>
						</tr>
					</tbody>
				</table>
				<p>When the sending and receiving SOAP nodes transition between
	 states, the local binding instance (logically) updates a number of
	 properties. <specref ref="tabreqstatetrans"/> and <specref ref="tabresstatetrans"/> describe these updates for the sending
	 and the receiving SOAP nodes, respectively.</p>
				<table width="100%" border="1" id="tabreqstatetrans">
					<caption>Sending SOAP Node State Transitions</caption>
					<tbody>
						<tr>
							<th valign="top">CurrentState</th>
							<th valign="top">Transition Condition</th>
							<th valign="top">NextState</th>
							<th valign="top">Action</th>
						</tr>
						<tr>
							<td valign="top">
								<attval>Init</attval>
							</td>
							<td valign="top">Unconditional</td>
							<td valign="top">
								<attval>Sending</attval>
							</td>
							<td valign="top">Initiate transmission of message
		    abstracted in
		    <att>http://www.w3.org/2003/05/soap/mep/OutboundMessage</att>.</td>
						</tr>
						<tr>
							<td valign="top" rowspan="2">
								<attval>Sending</attval>
							</td>
							<td valign="top">Message transmission failure</td>
							<td valign="top">
								<attval>Fail</attval>
							</td>
							<td valign="top">Set
		      <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</att> to
		      <attval>transmissionFailure</attval>
							</td>
						</tr>
						<tr>
							<td valign="top">Completed sending message. </td>
							<td valign="top">
								<attval>Success</attval>
							</td>
							<td valign="top">&nbsp;</td>
						</tr>
					</tbody>
				</table>
				<p>&nbsp;</p>
				<table width="100%" border="1" id="tabresstatetrans">
					<caption>Receiving SOAP Node State Transitions</caption>
					<tbody>
						<tr>
							<th valign="top">CurrentState</th>
							<th valign="top">Transition Condition</th>
							<th valign="top">NextState</th>
							<th valign="top">Action</th>
						</tr>
						<tr>
							<td valign="top">
								<attval>Init</attval>
							</td>
							<td valign="top">Start receiving message</td>
							<td valign="top">
								<attval>Receiving</attval>
							</td>
							<td valign="top">Set
		      <att>http://www.w3.org/2003/05/soap/mep/ImmediateSender</att> to denote the sender of the message (if determinable).
		      Start making an abstraction of the message available in <att>http://www.w3.org/2003/05/soap/mep/InboundMessage</att>.
		      Pass control of message exchange context to SOAP processor.</td>
						</tr>
						<tr>
							<td valign="top" rowspan="2">
								<attval>Receiving</attval>
							</td>
							<td valign="top">Message reception failure</td>
							<td valign="top">
								<attval>Fail</attval>
							</td>
							<td valign="top">Set
		      <att>http://www.w3.org/2003/05/soap/bindingFramework/ExchangeContext/FailureReason</att> to
		      <attval>receptionFailure</attval>.</td>
						</tr>
						<tr>
							<td valign="top">Completed receiving message.</td>
							<td valign="top">
								<attval>Success</attval>
							</td>
							<td valign="top">&nbsp;</td>
						</tr>
					</tbody>
				</table>
			</div2>
			<div2 id="bindfaulthdn">
				<head>Fault Handling</head>
				<p>During the operation of the One-way MEP, the
	    participating SOAP nodes may generate SOAP faults.  This MEP makes no claims about the disposition or
           handling of SOAP faults generated by the sending SOAP node or the receiving SOAP node.</p>
			</div2>
		</div1>
		<div1 id="refs">
			<head>References</head>
			<div2 id="refs-norm">
				<head>Normative References</head>
				<blist>
					<bibl key="SOAP Part 2" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.w3.org/TR/2003/REC-soap12-part2-20030624/" id="SOAP-PART2">W3C Proposed Recommendation
	  "SOAP Version 1.2 Part 2: Adjuncts", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
	  Henrik Frystyk Nielsen, 24 June 2003</bibl>
					<bibl key="RFC 2119" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" id="RFC2119" href="http://www.ietf.org/rfc/rfc2119.txt">IETF "RFC 2119:
	  Key words for use in RFCs to Indicate Requirement Levels",
	  S. Bradner, March 1997.</bibl>
					<bibl key="RFC 2396" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" id="RFC2396" href="http://www.ietf.org/rfc/rfc2396.txt">IETF "RFC 2396:
	  Uniform Resource Identifiers (URI): Generic Syntax",
	  T. Berners-Lee, R. Fielding, L. Masinter, August
	  1998.</bibl>
				</blist>
			</div2>
			<div2 id="refs-inform">
				<head>Informative References</head>
				<blist>
					<bibl key="SOAP Part 0" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.w3.org/TR/2003/REC-soap12-part0-20030624/" id="SOAP-PART0">W3C Proposed Recommendation "SOAP Version 1.2 Part 0:
    	Primer", Nilo Mitra, 24 June 2003</bibl>
					<bibl key="SOAP Part 1" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.w3.org/TR/2003/REC-soap12-part1-20030624/" id="SOAP-PART1">W3C Proposed Recommendation
	  "SOAP Version 1.2 Part 1: Messaging
	  Framework", Martin Gudgin, Marc Hadley, Noah Mendelsohn, Jean-Jacques Moreau,
	  Henrik Frystyk Nielsen, 24 June 2003</bibl>
					<bibl key="XMLP Comments" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://lists.w3.org/Archives/Public/xmlp-comments/" id="CommentArchive">XML Protocol Comments Archive</bibl>
					<bibl key="XMLP Dist-App" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://lists.w3.org/Archives/Public/xml-dist-app/" id="DiscussionArchive">XML Protocol Discussion
	    Archive</bibl>
					<bibl key="XMLP Charter" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.w3.org/2000/09/XML-Protocol-Charter" id="XMLPCharter">XML Protocol Charter</bibl>
					<bibl key="RFC 2045" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" href="http://www.ietf.org/rfc/rfc2045.txt" id="RFC2045">IETF "RFC2045: Multipurpose Internet Mail
	    Extensions (MIME) Part One: Format of Internet Message
	    Bodies", N. Freed, N. Borenstein, November 1996.</bibl>
					<bibl key="RFC 2026" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:type="simple" xlink:show="replace" xlink:actuate="onRequest" id="RFC2026" href="http://www.ietf.org/rfc/rfc2026.txt">IETF "RFC 2026:
	  The Internet Standards Process -- Revision 3", section
	  4.2.3, S. Bradner, October 1996.</bibl>
				</blist>
			</div2>
		</div1>
	</body>
	<back>
		<inform-div1 id="changelog">
			<head>Change Log</head>
			<table border="1">
				<caption>Changes since candidate recommendation.</caption>
				<thead>
					<tr>
						<th>Who</th>
						<th>When</th>
						<th>What</th>
					</tr>
				</thead>
				<tbody>
					<tr>
						<td>DBO</td>
						<td>20041208</td>
						<td>Initial Revision</td>
					</tr>
					<tr>
						<td>DBO</td>
						<td>20060330</td>
						<td>2nd Revision</td>
					</tr>


				</tbody>
			</table>
		</inform-div1>
	</back>
</spec>
entitiesedcopy.dtd (application/octet-stream, 704 B) - not displayed