NOTE-soap12-email-20020703 28.8 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076
<!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>&nbsp;&copy;&nbsp;2002&nbsp;<a
 href="http://www.w3.org/"><abbr title=
"World Wide Web Consortium">W3C</abbr></a><sup>&reg;</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>