You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1076 lines
29 KiB
1076 lines
29 KiB
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
|
|
"http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<meta name="generator" content="HTML Tidy, see www.w3.org">
|
|
<title>SOAP Version 1.2 Email Binding</title>
|
|
<meta content="MSHTML 6.00.2462.0" name="GENERATOR">
|
|
<meta http-equiv="Content-Type" content=
|
|
"text/html; charset=iso-8859-1">
|
|
<meta content="MSHTML 6.00.2462.0" name="GENERATOR">
|
|
<link href=
|
|
"http://www.w3.org/StyleSheets/TR/W3C-NOTE"
|
|
type="text/css" rel="stylesheet">
|
|
</head>
|
|
<body lang="EN-US">
|
|
<div class="head">
|
|
<a href="http://www.w3.org/"><img height="48"
|
|
alt="W3C" src="http://www.w3.org/Icons/w3c_home" width="72"></a>
|
|
<h1>SOAP Version 1.2 Email Binding</h1>
|
|
|
|
<h2>W3C Note 3 July 2002</h2>
|
|
|
|
<dl>
|
|
<dt>This version:</dt>
|
|
<dd><a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020703">http://www.w3.org/TR/2002/NOTE-soap12-email-20020703</a></dd>
|
|
<dt>Latest version:</dt>
|
|
<dd><a href="http://www.w3.org/TR/soap12-email">http://www.w3.org/TR/soap12-email</a></dd>
|
|
<dt>Previous versions:</dt>
|
|
<dd><a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626">http://www.w3.org/TR/2002/NOTE-soap12-email-20020626</a></dd>
|
|
<dt>Authors:</dt>
|
|
<dd><a href="mailto:highland.m.mountain@intel.com">Highland Mary
|
|
Mountain</a>, Intel</dd>
|
|
<dd><a href="mailto:jacek@systinet.com">Jacek Kopecky</a>,
|
|
Systinet</dd>
|
|
<dd><a href="mailto:skw@hplb.hpl.hp.com">Stuart Williams</a>,
|
|
HP</dd>
|
|
<dd><a href="mailto:gdaniels@macromedia.com">Glen Daniels</a>,
|
|
Macromedia</dd>
|
|
<dd><a href="mailto:Noah_Mendelsohn@us.ibm.com">Noah
|
|
Mendelsohn</a>, IBM</dd>
|
|
</dl>
|
|
|
|
<p class="copyright"><a href=
|
|
"http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright">Copyright</a> © 2002 <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>
|
|
|
|
<h2><a name="abstract" id="abstract">Abstract</a></h2>
|
|
|
|
<p>This document is meant to be an illustration of the SOAP 1.2
|
|
Protocol Binding Framework applied to a well known internet
|
|
transport mechanism, Email, specifically rfc2822.</p>
|
|
|
|
<h2><a name="status" id="status">Status of this document</a></h2>
|
|
|
|
<p>This document is a NOTE made available by the W3C for discussion
|
|
only. Publication of this Note by W3C indicates no endorsement of its
|
|
content by W3C, nor that W3C has, is, or will be allocating any
|
|
resources to the issues addressed by the Note.
|
|
This document is a work in progress and may be updated, replaced,
|
|
or rendered obsolete by other documents at any time.</p>
|
|
|
|
<p>This document was written by members of the Transport Binding Task Force
|
|
(TBTF)-- a part of the XML Protocol WG-- on behalf of the XML Protocol WG.
|
|
The XML Protocol WG agreed to the publication of this document. The XML
|
|
Protocol WG has no plans for further work on this document.</p>
|
|
|
|
<p>This version has been published to clarify the status section of
|
|
the previously published version.</p>
|
|
|
|
<p>A list of current W3C technical documents can be found at the <a
|
|
href="http://www.w3.org/TR/">Technical Reports page</a>.</p>
|
|
|
|
<h2><a name="motivation" id="motication">Motivation</a></h2>
|
|
|
|
<p>The motivation for this document is to illustrate the SOAP 1.2
|
|
Protocol Binding Framework and the creation of an alternative
|
|
protocol binding specification to the Default HTTP binding. This
|
|
second binding is meant to validate the Protocol Binding Framework
|
|
for completeness and usability. Please note that this document is a
|
|
non-normative description of an Email Binding.</p>
|
|
|
|
<p>It is not the responsibility of this SOAP binding to mandate a
|
|
specific email infrastructure, therefore specific email
|
|
infrastructure protocol commands (such as SMTP, POP3, etc) are not
|
|
covered in this binding document. The underlying email
|
|
infrastructure and the associated commands of specific email
|
|
clients and servers along the message path are outside the scope of
|
|
this email binding.</p>
|
|
|
|
<h3><a name="nc" id="nc">Notational Conventions</a></h3>
|
|
|
|
<p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
|
|
"SHALLNOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
|
|
"OPTIONAL" in this document are to be interpreted as described in
|
|
RFC2119 <a href=
|
|
"#KEYWORDS">[KEYWORDS]</a>.</p>
|
|
|
|
<p>Namespace URIs of the general form "some-URI" represent some
|
|
application-dependent or context-dependent URI as defined in
|
|
RFC2396 <a href=
|
|
"#URI">[URI]</a>.
|
|
The namespace prefixes "SOAP-ENV" and "ds" used in this document
|
|
are associated with the namespaces
|
|
"http://schemas.xmlsoap.org/soap/envelope/" and
|
|
"http://www.w3.org/2000/09/xmldsig#", respectively.</p>
|
|
|
|
<div class="div1">
|
|
<h2><a name="toc" id="toc">Table of Contents</a></h2>
|
|
|
|
1 <a href=
|
|
"#NDAD">Introduction</a><br>
|
|
2<a href=
|
|
"#NE1F">Binding
|
|
Name</a><br>
|
|
3 <a href=
|
|
"#NE33">Supported
|
|
Message Exchange Patterns</a><br>
|
|
4 <a href=
|
|
"#NE69">Request-Response
|
|
Exchanges</a><br>
|
|
4.1 <a href=
|
|
"#NEAB">Behaviour
|
|
of Requesting SOAP Node</a><br>
|
|
4.1.1 <a href=
|
|
"#NED7">Init</a><br>
|
|
|
|
4.1.2 <a href=
|
|
"#NFDC">Sending</a><br>
|
|
|
|
4.1.3 <a href=
|
|
"#N131C">Sending
|
|
+ Receiving</a><br>
|
|
4.1.4 <a href=
|
|
"#N13DE">Success
|
|
and Fail</a><br>
|
|
4.2 <a href=
|
|
"#N13E7">Behaviour
|
|
of Responding SOAP Node</a><br>
|
|
4.2.1 <a href=
|
|
"#N1413">Init</a><br>
|
|
|
|
4.2.2 <a href=
|
|
"#N1550">Receiving</a><br>
|
|
|
|
4.2.3 <a href=
|
|
"#N15E3">Receiving
|
|
+ Sending</a><br>
|
|
4.2.4 <a href=
|
|
"#N1750">Success
|
|
and Fail</a><br>
|
|
5 <a href=
|
|
"#N176C">Features
|
|
Expressed External to the Message Envelope</a><br>
|
|
5.1 <a href=
|
|
"#correlation">
|
|
Message Correlation Using msg-id</a><br>
|
|
6 <a href=
|
|
"#N18F7">SOAP
|
|
Email Examples</a><br>
|
|
7 <a href=
|
|
"#ref">References</a><br>
|
|
|
|
</div>
|
|
|
|
<div class="div2">
|
|
<h3><a name="NDAD" id="NDAD"></a>1 Introduction</h3>
|
|
|
|
<p>This SOAP binding specification adheres to the SOAP Protocol
|
|
Binding Framework (see <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part1-20020626/#transpbindframew">
|
|
SOAP Protocol Binding Framework</a>), and as such uses abstract
|
|
properties as a descriptive tool for defining the functionality of
|
|
certain features.</p>
|
|
|
|
<p>Properties are named with XML qualified names (QNames). Property
|
|
values are determined by the Schema type of the property, as
|
|
defined in the specification which introduces the property. The
|
|
following tables lists the standard prefix mappings which we assume
|
|
to hold throughout this specification:</p>
|
|
|
|
<table border="1">
|
|
<caption>Table 1: Standard prefix mappings</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<th>Prefix</th>
|
|
<th>Namespace</th>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>context</td>
|
|
<td>
|
|
http://www.example.org/2001/12/soap/bindingFramework/ExchangeContext/</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>mep</td>
|
|
<td>http://www.example.org/2001/12/soap/mep/</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>fail</td>
|
|
<td>http://www.example.org/2001/12/soap/mep/FailureReasons/</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>reqresp</td>
|
|
<td>http://www.example.org/2001/12/soap/mep/request-response/</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>Email applications MUST use the media type
|
|
"application/soap+xml" according to <a href=
|
|
"#soap-media-type">
|
|
[soap-media-type]</a> when including SOAP 1.2 messages in Email
|
|
exchanges. See <a href=
|
|
"#soap-media-type">
|
|
[soap-media-type]</a> for parameters defined by this media type and
|
|
their recommended use.</p>
|
|
</div>
|
|
|
|
<div class="div2">
|
|
<h3><a name="NE1F" id="NE1F"></a>2 Binding Name</h3>
|
|
|
|
<p>The binding described here is identified with the URI:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>http://www.example.org/2002/02/soap/bindings/Email/</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>This binding is provided as an example binding when using Email
|
|
and the standard Internet Message Format described in rfc2822.
|
|
Unlike HTTP, Email does not inherently provide a request/response
|
|
Message Exchange Operation. An Email message meant to be a response
|
|
to the original request will be sent back to the original sender. A
|
|
means of correlating the original request to the resulting response
|
|
will be descibed as a binding feature.</p>
|
|
</div>
|
|
|
|
<div class="div2">
|
|
<h3><a name="NE33" id="NE33"></a>3 Supported Message Exchange Patterns</h3>
|
|
|
|
<p>An instance of a binding to Email<a href=
|
|
"#RFC2822">[RFC2822]</a>
|
|
conforming to this binding specification MUST support the following
|
|
message exchange pattern:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>http://www.example.org/2001/12/soap/mep/request-response/ (see
|
|
<a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep">
|
|
<b>SOAP 1.2, Part 2, 6.2 Request-Response MEP</b></a>)</p>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<p>Note that although this message exchange pattern permits
|
|
temporal overlap between a SOAP Request Message and a SOAP Response
|
|
Message, the store-and-forward nature of Email is such that this
|
|
circumstance does not arise. This binding specification treats the
|
|
transmission and reception of SOAP messages as discrete events.</p>
|
|
|
|
<div class="div2">
|
|
<h3><a name="NE69" id="NE69"></a>4 Request-Response Message Exchange
|
|
Operation</h3>
|
|
|
|
<div class="div3">
|
|
<p>The "http://www.w3.org/2002/06/soap/mep/request-response/"
|
|
message pattern is described in <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep">
|
|
<b>SOAP 1.2, Part 2, 6.2 Request-Response MEP</b></a>.</p>
|
|
|
|
<p>For binding instances conforming to this specification:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>A SOAP Node instantiated at an email protocol interface (sending
|
|
and receiving) may take on the role (i.e. the property
|
|
<code>reqresp:Role</code>) of <code>RequestingSOAPNode</code>.</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>A SOAP Node instantiated at an email protocol interface (sending
|
|
and receiving) may take on the role (ie. the property
|
|
<code>reqresp:Role</code>) of <code>RespondingSOAPNode</code>.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>The remainder of this section consists of descriptions of the
|
|
MEP state machine, and its particular relation to RFC 2822. In the
|
|
state tables below, the states are defined as values for the
|
|
property <code>reqresp:State</code> (see <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep">
|
|
<b>SOAP 1.2, Part 2, 6.2 Request-Response MEP</b></a>), and are of
|
|
type <code>reqresp:StateType</code> (an enumeration over
|
|
<code>xsd:string</code>).</p>
|
|
|
|
<p>Failure reasons as specified in the tables represent values of
|
|
the property <code>context:FailureReason</code> - their values are
|
|
QNames. If an implementation enters the "Fail" state, the
|
|
<code>context:FailureReason</code> property will contain the value
|
|
specified for the particular transition.</p>
|
|
|
|
<div class="div4">
|
|
<h5><a name="NEAB" id="NEAB"></a>4.1 Behaviour of Requesting SOAP Node</h5>
|
|
|
|
<p>The overall flow of the behaviour of a Requesting SOAP Node
|
|
follows the outline state machine description contained in <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep">
|
|
<b>SOAP 1.2, Part 2, 6.2 Request-Response MEP</b></a>. The
|
|
following subsections describe each state in more detail.</p>
|
|
|
|
<div class="div5">
|
|
<h6><a name="NED7" id="NED7"></a>4.1.1 Init</h6>
|
|
|
|
<table border="1">
|
|
<caption>Table 2: State Description: Init</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Init</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Formulate and Send Request
|
|
Message</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">See <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#bindformdesc">
|
|
<b>SOAP 1.2, Part 2, 6.2.3 Request-Response Formal
|
|
Description</b></a></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Action on Entry</td>
|
|
<td valign="top" colspan="3">Formulate and send Email Request (see
|
|
Table 3:Email Fields)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" rowspan="3">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Failure Reason</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Request Successfully Sent</td>
|
|
<td valign="top">Requesting</td>
|
|
<td valign="top">N/A</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Failure to send Request</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:TransmissionFailure</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<table border="1">
|
|
<caption>Table 3: Email Fields</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Field Descriptions</td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Originator and Destination Fields</td>
|
|
<td>"From:" sender-node-uri CRLF<br>
|
|
"To:" request-uri CRLF<br>
|
|
"Message-ID:" correlation:requestMessageID CRLF<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Sender Node URI</td>
|
|
<td>The value of the URI carried in the
|
|
<code>reqresp:ImmediateSender</code> property of the message
|
|
exchange context.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Request URI</td>
|
|
<td>The value of the URI carried in the
|
|
<code>reqresp:ImmediateDestination</code> property of the transport
|
|
message exchange context.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Correlation Request Message ID</td>
|
|
<td>The Request email msg-id value is automatically generated at
|
|
the requesting node's email interface. The correlation feature
|
|
<code>correlation:requestMessageID</code> is described in Section
|
|
5.1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Content-Type (MIME) header</td>
|
|
<td>"application/soap+xml" (see <a href=
|
|
"#NDAD"><b>Introduction</b></a>)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Email message body</td>
|
|
<td>XML 1.0 serialisation of the SOAP message XML Infoset carried
|
|
in the reqresp:OutboundMessage property of the transport message
|
|
exchange context.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="NFDC" id="NFDC"></a>4.1.2 Sending</h6>
|
|
|
|
<table border="1">
|
|
<caption>Table 4:State Description: Sending</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Sending</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Waiting for correlated Email
|
|
response(Request Message completely sent on exit from Init
|
|
state)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">
|
|
<ul>
|
|
<li>
|
|
<p>Instantiate or replace the property
|
|
<code>reqresp:ImmediateSender</code> with a URI value that denotes
|
|
the sender of the Email response (if known)</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>In all cases, any Email fields that are significant to features
|
|
expressed outside the SOAP envelope are processed in accordance
|
|
with the relevant feature specification.</p>
|
|
</li>
|
|
</ul>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" rowspan="3">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Failure Reason</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Received correlated Email response</td>
|
|
<td valign="top">Sending + Receiving</td>
|
|
<td valign="top">NA</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Reception Failure - Timeout</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:ReceptionFailure</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N131C" id="N131C"></a>4.1.3 Sending + Receiving</h6>
|
|
|
|
<br>
|
|
<br>
|
|
<table border="1">
|
|
<caption>Table 5: State Description: Sending + Receiving
|
|
State</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Receiving</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Receive Correlated Email response
|
|
entity body, which is assumed to contain a SOAP envelope serialized
|
|
according the XML 1.0 + Namespaces spec.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">On transitions to Success, instantiate
|
|
or replace the property reqresp:InboundMessage with an infoset
|
|
representation of the serialized envelope in the response
|
|
body.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" rowspan="5">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Failure Reason</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Well formed Response Message Received</td>
|
|
<td valign="top">Success</td>
|
|
<td valign="top"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Reception Failure (broken connections etc.)</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:ReceptionFailure</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Packaging Failure (inc. mismatched
|
|
Content-Type)</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:PackagingFailure</code></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Malformed Response Message, eg malformed XML,
|
|
message contained a DTD, an invalid SOAP Envelope</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:BadResponseMessage</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N13DE" id="N13DE"></a>4.1.4 Success and Fail</h6>
|
|
|
|
<p>These are the terminal states of for a given instance of a
|
|
request-response transport message exchange. Control over the
|
|
transport message exchange context returns to the local SOAP
|
|
node.</p>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="div4">
|
|
<h5><a name="N13E7" id="N13E7"></a>4.2 Behaviour of Responding SOAP Node</h5>
|
|
|
|
<p>The overall flow of the behaviour of a Requesting SOAP Node
|
|
follows the outline state machine description contained in <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep">
|
|
<b>SOAP 1.2, Part 2, 6.2 Request-Response MEP</b></a>.</p>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N1413" id="N1413"></a>4.2.1 Init</h6>
|
|
|
|
<table border="1">
|
|
<caption>Table 6: State Description: Init</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Init</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Receive and validate the inbound
|
|
Request Message</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">Delivery of an Email message
|
|
containing a SOAP envelope serialized according the XML 1.0.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" rowspan="3">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Action</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Receive Email message containing well formed
|
|
Request Message.</td>
|
|
<td valign="top">Receiving</td>
|
|
<td valign="top">
|
|
<ul>
|
|
<li>
|
|
<p>Instantiate or replace the property reqresp:ImmediateSender with
|
|
a URI value that denotes the sender of the Email message
|
|
request</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>Instantiate or replace the property reqresp:InboundMessage with
|
|
a value that represents an infoset representation of the received
|
|
Request Message.</p>
|
|
</li>
|
|
|
|
<li>
|
|
<p>Any Email headers that are significant to features expressed
|
|
outside the SOAP envelope (eg correlation via msg-id) are processed
|
|
in accordance with the relevant feature specification.</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>This change of state represents a transfer of control of the
|
|
inbound transport message exchange context to the local SOAP
|
|
node.</p>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Receive Email message containing malformed Request
|
|
Message</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top">
|
|
<p>The message is deemed to have been intended for the local SOAP
|
|
node, but is deemed badly formed: ill-formed XML, contains a
|
|
serialized DTD and/or does contain a valid SOAP envelope. The local
|
|
SOAP node generates SOAP Fault message in accordance with the table
|
|
below which it sends in the corresponding Email response
|
|
message.</p>
|
|
|
|
<p>The transport message exchange context may be destroyed or
|
|
considered not to have been created.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N1550" id="N1550"></a>4.2.2 Receiving</h6>
|
|
|
|
<table border="1">
|
|
<caption>Table 7: State Description: Receiving</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Receiving</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Waiting for Response Message to become
|
|
available in Message Exchange Context as a result of processing the
|
|
Request Message (note Request Message fully received on exit from
|
|
Init state).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">See Below</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top" rowspan="3">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Action or Failure Reason</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">A Response Message becomes available in
|
|
reqresp:OutBoundMessage indicating that the local SOAP node has
|
|
generated a Response Message.</td>
|
|
<td valign="top">Receiving + Sending</td>
|
|
<td valign="top">reqresp:OutboundMessage MAY contain a SOAP
|
|
fault.<br>
|
|
<br>
|
|
Formulate and send the Response Message (see Table 9: Email
|
|
Fields)</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N15E3" id="N15E3"></a>4.2.3 Receiving + Sending</h6>
|
|
|
|
<table border="1">
|
|
<caption>Table 8: State Description: Receiving + Sending</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Statename</td>
|
|
<td valign="top" colspan="3">Receiving + Sending</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Description</td>
|
|
<td valign="top" colspan="3">Completing Request Message reception
|
|
and Response Message transmission. (Response Message sent on exit
|
|
from Receiving State).</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Preconditons</td>
|
|
<td valign="top" colspan="3">None</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Post Conditions</td>
|
|
<td valign="top" colspan="3">See Below</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top" colspan="3"></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Transitions</td>
|
|
<td valign="top">Event/Condition</td>
|
|
<td valign="top">NextState</td>
|
|
<td valign="top">Action or Failure Reason</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"></td>
|
|
<td valign="top">Response Message Successfully sent</td>
|
|
<td valign="top">Success</td>
|
|
<td valign="top">NA</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td></td>
|
|
<td valign="top">Failure to send Response Message</td>
|
|
<td valign="top">Fail</td>
|
|
<td valign="top"><code>fail:TransmissionFailure</code></td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<br>
|
|
<table border="1">
|
|
<caption>Table 9: Email Fields</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td>Field Descriptions</td>
|
|
<td></td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Originator and Destination Fields</td>
|
|
<td>"From:" request-uri CRLF<br>
|
|
"To:" sender-node-uri CRLF<br>
|
|
"In-Reply-To:" correlation:requestMessageID CRLF<br>
|
|
</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Sender Node URI</td>
|
|
<td>The value of the URI carried in the
|
|
<code>reqresp:ImmediateSender</code> property of the transport
|
|
message exchange context.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Request URI</td>
|
|
<td>The value of the URI carried in the
|
|
<code>reqresp:ImmediateDestination</code> property of the transport
|
|
message exchange context.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Correlation Request Message ID</td>
|
|
<td>The Request email msg-id carried in the correlation property
|
|
<code>correlation:requestMessageID</code> is described in Section
|
|
5.1.</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Content-Type (MIME) header</td>
|
|
<td>"application/soap+xml" (see <a href=
|
|
"#NDAD"><b>Introduction</b></a>)</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td>Email message body</td>
|
|
<td>XML 1.0 serialisation of the SOAP message XML Infoset carried
|
|
in the reqresp:OutBoundMessage property of the transport message
|
|
exchange context.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="div5">
|
|
<h6><a name="N1750" id="N1750"></a>4.2.4 Success and Fail</h6>
|
|
|
|
<p>These are the terminal states of for a given instance of a
|
|
request-response transport message exchange. From the point-of-view
|
|
of the local node this message exchange has completed.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="div2">
|
|
<h3><a name="N176C" id="N176C">5. Features Expressed External to the Message
|
|
Envelope</a></h3>
|
|
|
|
<p>This transport binding specification defines a binding specific
|
|
expression for the following features:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
http://www.example.org/2001/12/soap/bindings/Email/correlation/</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>Other features that are compatible with the message exchange
|
|
patterns listed above are supported using their generic in-envelope
|
|
expression defined in the relevant feature specification.</p>
|
|
|
|
<div class="div3">
|
|
<h4><a name="correlation" id="correlation"></a>5.1 Message Correlation using
|
|
msg-id</h4>
|
|
|
|
<p>This sub-section defines a binding specific optional feature
|
|
named:</p>
|
|
|
|
<ul>
|
|
<li>
|
|
<p>
|
|
http://www.example.org/2001/12/soap/binding/Email/correlation/</p>
|
|
</li>
|
|
</ul>
|
|
|
|
<p>In the text to follow, the prefix "correlation" is mapped to the
|
|
URI
|
|
"http://www.example.org/2001/12/soap/binding/Email/correlation/"</p>
|
|
|
|
<p>SOAP Requesters using this binding will need a mechanism to
|
|
correlate response messages to their original, corresponding
|
|
request message. This binding uses an externalised expression of
|
|
the correlation feature (email msg-id) to supply this
|
|
information.</p>
|
|
|
|
<table border="1">
|
|
<caption>Feature Properties</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top">Property Name</td>
|
|
<td valign="top">Description</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><code>correlation:requestMessageID</code></td>
|
|
<td valign="top">Used to hold the original request email message
|
|
id, which is automatically generated by the requesting nodes email
|
|
infrastructure.
|
|
|
|
<p>The type of this property is <em>String</em> in the namespace
|
|
<em>http://www.w3.org/2001/XMLSchema-datatypes</em>.</p>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<p>The <code>correlation:requestMessageID</code> property is
|
|
represented using Email fields. The following table shows the
|
|
points at which the property value and the Email fields are
|
|
exchanged.</p>
|
|
|
|
<table border="1">
|
|
<caption>Feature Operation (Client side)</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top" colspan="3">Client</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Property Name</td>
|
|
<td valign="top">Request</td>
|
|
<td valign="top">Response</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><code>correlation:requestMessageID</code></td>
|
|
<td valign="top">The automatically generated
|
|
<code>correlation:requestMessageID</code> property is sent as the
|
|
value of the Email field Message-ID.</td>
|
|
<td valign="top">N/A</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<table border="1">
|
|
<caption>Feature Operation (Server side)</caption>
|
|
|
|
<tbody>
|
|
<tr>
|
|
<td valign="top" colspan="3">Server</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top">Property Name</td>
|
|
<td valign="top">Request</td>
|
|
<td valign="top">Response</td>
|
|
</tr>
|
|
|
|
<tr>
|
|
<td valign="top"><code>correlation:requestMessageID</code></td>
|
|
<td valign="top">N/A</td>
|
|
<td valign="top">The original requesting Message-ID
|
|
<code>correlation:requestMessageID</code> will be returned to the
|
|
requesting node via the Email field In-Reply-To.</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
<h3><a name="N18F7" id="N18F7">6. SOAP Email Examples</a></h3>
|
|
|
|
See <a href=
|
|
"http://www.w3.org/TR/2002/WD-soap12-part0-20020626/#SMTP">
|
|
SOAP 1.2 Primer, 3.2 SOAP over Email</a>
|
|
|
|
<h3><a name="ref" id="ref">7. References</a></h3>
|
|
|
|
<dl>
|
|
<dt><a name="KEYWORDS" id="KEYWORDS">[KEYWORDS]</a></dt>
|
|
|
|
<dd>S. Bradner, "Key words for use in RFCs to Indicate Requirement
|
|
Levels," <a href="http://www.ietf.org/rfc/rfc2119.txt">RFC
|
|
2119</a>, Harvard University, March 1997</dd>
|
|
|
|
<dt><a name="SOAP-Part1" id="SOAP-Part1">[SOAP-1.2 Part 1]</a></dt>
|
|
|
|
<dd>W3C Working Draft <a href=
|
|
"http://www.w3.org/TR/soap12-part1/">"SOAP 1.2 Part 1: Messaging
|
|
Framework,"</a> Martin Gudgin, Marc Hadley, Jean-Jacques Moreau,
|
|
Henrik Frystyk Nielsen</dd>
|
|
|
|
<dt><a name="SOAP-Part2" id="SOAP-Part2">[SOAP-1.2 Part 2]</a></dt>
|
|
|
|
<dd>W3C Working Draft <a href=
|
|
"http://www.w3.org/TR/soap12-part1/">"SOAP 1.2 Part 2:
|
|
Adjuncts,"</a> Martin Gudgin, Marc Hadley, Jean-Jacques Moreau,
|
|
Henrik Frystyk Nielsen</dd>
|
|
|
|
<dt><a name="SOAP-attachment" id="SOAP-attachment">[SOAP-attachment]</a></dt>
|
|
|
|
<dd>W3C Note, "<a href=
|
|
"http://www.w3.org/TR/2000/NOTE-SOAP-attachments-20001211">SOAP
|
|
Messages with Attachments</a>," 11 December 2000.</dd>
|
|
|
|
<dt><a name="URI" id="URI">[URI]</a></dt>
|
|
|
|
<dd>T. Berners-Lee, R. Fielding, L. Masinter, "Uniform Resource
|
|
Identifiers (URI): Generic Syntax," <a href=
|
|
"http://www.ietf.org/rfc/rfc2396.txt">RFC 2396</a>, MIT/LCS, U.C.
|
|
Irvine, Xerox Corporation, August 1998.</dd>
|
|
|
|
<dt><a name="XML-ns" id="XML-ns">[XML-ns]</a></dt>
|
|
|
|
<dd>W3C Recommendation, "<a href=
|
|
"http://www.w3.org/TR/1999/REC-xml-names-19990114">Namespaces in
|
|
XML</a>," 14 January 1999.</dd>
|
|
|
|
<dt><a name="RFC2822" id="RFC2822">[RFC2822]</a></dt>
|
|
|
|
<dd>IETF Request for Comments, (Obsoletes 822) "<a href=
|
|
"http://www.ietf.org/rfc/rfc2822.txt?number=2822">RFC2822</a> ,"
|
|
April 2001.</dd>
|
|
|
|
<dt><a name="soap-media-type" id="soap-media-type">[soap-media-type]</a></dt>
|
|
|
|
<dd>IETF "INTERNET DRAFT: The 'application/soap+xml' media type",
|
|
M. Baker, M. Nottingham, January 14, 2002. (Work in progress). (See
|
|
http://www.ietf.org/internet-drafts/draft-baker-soap-media-reg-00.txt.)</dd>
|
|
|
|
<dt><a name="XML-1" id="XML-1">[xml-1]</a></dt>
|
|
|
|
<dd>W3C Recommendation <a href=
|
|
"http://www.w3.org/TR/2000/REC-xml-20001006">"Extensible Markup
|
|
Language (XML) 1.0 (Second Edition),"</a> Tim Bray, Jean Paoli, C.
|
|
M. Sperberg-McQueen, Eve Maler, 6 October 2000.</dd>
|
|
</dl>
|
|
</div>
|
|
</body>
|
|
</html>
|
|
|