<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../../web/sc2html.xsl" title="scenario"?>
<scenario xmlns="http://www.wstf.org">

 <metadata>
  <number>sc003</number>
  <title>WS-Addressing</title>
  <date>2008/11/03</date>
  <status>Published</status>
 </metadata>

 <abstract>
  This scenario is meant to test WS-Addressing.
  It will use the basic Notify/Echo message exchanges in
  <a href="http://www.wstf.org/docs/scenarios/sc002/sc002.xml">sc002</a>
  by simply adding the use of WS-Addressing to the exchanges.
 </abstract>

 <section title="Dependencies">
  <scope>
   <technology name="SOAP 1.1" url="http://www.w3.org/TR/2000/NOTE-SOAP-20000508/"/>
   <technology name="SOAP 1.2" url="http://www.w3.org/TR/soap12-part1/"/>
   <technology name="WS-Addressing 1.0 - Core" url="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509"/>
   <technology name="WS-Addressing 1.0 - SOAP Binding" url="http://www.w3.org/TR/2006/REC-ws-addr-soap-20060509"/>
   <technology name="WS-Addressing 1.0 - Metadata" url="http://www.w3.org/TR/2007/REC-ws-addr-metadata-20070904"/>
  </scope>

  <namespaces>
   <namespace prefix="s" ns="(Either SOAP 1.1 or 1.2)"
                         name="(Either SOAP 1.1 or 1.2)"/>
   <namespace prefix="s11" ns="http://schemas.xmlsoap.org/soap/envelope/"
                           name="SOAP 1.1"/>
   <namespace prefix="s12" ns="http://www.w3.org/2003/05/soap-envelope"
                           name="SOAP 1.2"/>
   <namespace prefix="xs" ns="http://www.w3.org/2001/XMLSchema"
                           name="XML Schema"/>
   <namespace prefix="wsa" ns="http://www.w3.org/2005/08/addressing"
                           name="WS-Addressing"/>
   <namespace prefix="sc002" ns="http://www.wstf.org/docs/scenarios/sc002"
                           name="SC002"/>
   <namespace prefix="sc003" ns="http://www.wstf.org/docs/scenarios/sc003"
                           name="SC003 (this scenario)"/>
  </namespaces>

  <subheading title="Preconditions">
   The tests in this scenario require the operations defined in
   <a href="http://www.wstf.org/docs/scenarios/sc002/sc002.xml">sc002</a>
   and support for the
   <a href="http://www.w3.org/2005/08/addressing">W3C Recommendation
   version of WS-Addressing</a>.
  </subheading>

  <terms>
   <term term="Addressable Client">
    A client that is capable of accepting connections on a network
    endpoint; therefore the wsa:ReplyTo refers to an addressable endpoint.
   </term>
   <term term="Anonymous Client">
    A client that does not accept incoming incoming connections and the
    wsa:ReplyTo is either explicitly set to anonymous or the wsa:ReplyTo
    is not specified which implies an Anonymous URI.
   </term>
   <term term="Asynchronous Request-Response Message Exchange">
    A SOAP message exchange in which a requester sends a SOAP message to
    a service and receives a response message. "Asynchronous" in this
    context refers to the manner in which the underlying transport
    protocol is used to carry the request and response messages. The
    response message is sent over a separate connection that is
    initiated by the service to the client (a "callback").
   </term>
   <term term="One-way Message">
    An application SOAP message for which no application SOAP response
    is expected.
   </term>
   <term term="Request Message">
    An application SOAP message for which an application SOAP response
    is expected.
   </term>
   <term term="Response Message">
    An application SOAP message triggered by a request message.
   </term>
   <term term="Synchronous Request-Response Message Exchange">
    A SOAP message exchange in which a requester sends a SOAP message to
    a service and receives a response message. "Synchronous" in this
    context refers to the way in which the underlying transport
    protocol used to carry the request and response messages. The
    response message is returned on the back channel of the request
    message.
   </term>
  </terms>

 </section>

 <section title="Scenario Description">
  In this scenario a client will send one of two messages: Notify or Echo.
  <br/>
  See <a href="http://www.wstf.org/docs/scenarios/sc002/sc002.xml">sc002</a>
  for more information of the specifics of those application messages.
  <p/>
  This scenario is divided into two portions. The first focuses on the
  messages exchanges from an end-user's point of view. In other words,
  the scenario assumes that the user has implemented the Notify and
  Echo operations and now simply "turns on" WS-Addressing.  From their
  point of view they simply want to ensure that the messages arrive at
  the service and, in the case of Echo, that the responses is sent to
  the proper endpoint. In these sets of tests the details are intentionally
  left a bit vague.  For example, in the case of a client using the
  wsa:Anonymous endpoint for wsa:ReplyTo, we don't indicate whether the
  wsa:ReplyTo is specified with this value or whether it is simply
  defaulted, per WS-Addressing.  Again, the main purpose is to ensure
  success from the application point of view.
  <p/>
  The second portion of this scenario looks at testing WS-Addressing
  from a lower-level, a SOAP stack implementors point of view. These
  tests will explicitly state which WS-Addressing elements should be
  present in each message. Theses tests are aimed at testing some of the
  less main-line uses of WS-Addressing.  While these are probably not
  the most common uses of WS-Addressing these tests will also not be a fully
  exaustive test of the WS-Addressing specification either. These are
  aimed at ensuring that there is interoperability even when the user
  leaves the most trivial uses of WS-Addressing.
 </section>

 <section title="Scenario Details">

  <part title="Enablement of WS-Addressing">
   <subheading title="Notify">
    When WS-Addressing is enabled the Notify operation has no semantic
    changes. The soap envelope will however be modified according to the
    following table:
    <table class="mono" cellpadding="2" cellspacing="0">
     <thead>
      <tr>
       <td>Artifact</td>
       <td>Comment</td>
      </tr>
     </thead>
     <tbody>
      <tr>
       <td>wsa:Action</td>
       <td>
        This required Header must be present with the value of:
        http://www.wstf.org/docs/scenarios/sc002/Notify
       </td>
      </tr>
      <tr>
       <td>wsa:To</td>
       <td>
        This Header must be present on HTTP request messages, and must
        be the same value as the HTTP URL.  On HTTP response messages,
        this Header is optional - and per the WS-Addressing specification,
        with a default value of the WS-Addressing anonymous URI.
       </td>
      </tr>
     </tbody>
    </table>
 
    <p/>
    Other WS-Addressing Header may be present, e.g. wsa:MessageID, but
    their presence or absense should not influence the success of the
    test. In particular, due to Notify being a one-way message,
    any faults generated may or may not be sent back to the client. The
    client should not expect to ever see one, and this is true whether its
    a soap (e.g. mustUnderstand) fault or an application fault.
 
    <p/>
    The Notify operation will have two variants in this part of the
    scenario.  The following table summarizes the tests and the expected
    results.
 
    <tests>
     <test name="Notify+WSA">
      <desc>
       Client sends the Notify message with WS-Addressing headers.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action and wsa:To are required.
      </desc>
      <success>
       Service responds with an HTTP 202
      </success>
     </test>
     <test name="Faulting Notify+WSA">
      <desc>
       Client sends a faulting Notify message with WS-Addressing headers.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action and wsa:To are required.
      </desc>
      <success>
       Service responds with an HTTP 202
      </success>
     </test>
    </tests>

   </subheading> <!-- End of Notify - part 1 -->

   <subheading title="Echo">
    When WS-Addressing is enabled the Echo operation has no semantic changes.
    The request soap envelopes will be modified according to the following
    table:
    <table class="mono" cellpadding="2" cellspacing="0">
     <thead>
      <tr>
       <td>Artifact</td>
       <td>Comment</td>
      </tr>
     </thead>
     <tbody>
      <tr>
       <td>wsa:Action</td>
       <td>
        This required Header must be present with the value of:
        http://www.wstf.org/docs/scenarios/sc002/Echo
       </td>
      </tr>
      <tr>
       <td>wsa:To</td>
       <td>
        This Header must be present on HTTP request messages, and must
        be the same value as the HTTP URL.  On HTTP response messages,
        this Header is optional - and per the WS-Addressing specification,
        with a default value of the WS-Addressing anonymous URI.
       </td>
      </tr>
      <tr>
       <td>wsa:MessageID</td>
       <td>This Header must be present</td>
      </tr>
      <tr>
       <td>wsa:ReplyTo/wsa:FaultTo</td>
       <td>
        Either of these headers may appear in the message. Per WS-Addressing,
        if they are both absent then their implied value is the Anonymous URI
       </td>
      </tr>
     </tbody>
    </table>
    <p/>
    Other WS-Addressing Headers may be present but their presence or absence
    should not influence the success of the test.
    <p/>
    And, the response soap envelopes will be modified according to the following
    table:
    <table class="mono" cellpadding="2" cellspacing="0">
     <thead>
      <tr>
       <td>Artifact</td>
       <td>Comment</td>
      </tr>
     </thead>
     <tbody>
      <tr>
       <td>wsa:Action</td>
       <td>
        This required Header must be present with the value of:
        http://www.wstf.org/docs/scenarios/sc002/EchoResponse
       </td>
      </tr>
      <tr>
       <td>wsa:To</td>
       <td>
        This Header must be present on HTTP request messages, and must
        be the same value as the HTTP URL.  On HTTP response messages,
        this Header is optional - and per the WS-Addressing specification,
        with a default value of the WS-Addressing anonymous URI.
       </td>
      </tr>
      <tr>
       <td>ref-parameters</td>
       <td>
        Additional Headers may appear if there were reference parameters
        in the wsa:ReplyTo/wsa:FaultTo of the request.
       </td>
      </tr>
      <tr>
       <td>wsa:RelatesTo</td>
       <td>
        This header must be present and reference the wsa:MessageID
        value that was specified in the request.
       </td>
      </tr>
     </tbody>
    </table>
    <p/>
    Other WS-Addressing Header may be present but their presence or absense
    should not influence the success of the test.
    <p/>
    The Echo operation will have several variants. The following table
    describes each one and specifies the expected results.
    <tests>
     <test name="Sync Echo+WSA">
      <desc>
       Client sends a non-faulting Echo message with WS-Addressing headers
       to indicate a synchronous response is expected.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action, wsa:To and wsa:MessageID
       are required. If a wsa:ReplyTo and/or wsa:FaultTo are included
       then they must be set to wsa:Anonymous.
      </desc>
      <success>
       Service responds with the appropriate EchoResponse on the HTTP
       back-channel, with the appropriate WS-Addressing headers (wsa:Action
       and wsa:RelatesTo at a minimum).
      </success>
     </test>
     <test name="ASync Echo+WSA">
      <desc>
       Client sends a non-faulting Echo message with WS-Addressing headers
       to indicate an asynchronous response is expected.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action, wsa:To, wsa:MessageID
       and wsa:ReplyTo are required.  The wsa:ReplyTo must refer to an
       addressable endpoint.
      </desc>
      <success>
       Service responds with the appropriate EchoResponse on a new connection
       to the wsa:ReplyTo EPR specified in the Echo message. On the original
       connection an HTTP 202 is returned. The EchoResponse message will
       contain the appropriate WS-Addressing headers (wsa:Action, wsa:To
       and wsa:RelatesTo at a minimum).
      </success>
     </test>
     <test name="Sync Faulting Echo+WSA">
      <desc>
       Client sends a faulting Echo message with WS-Addressing headers
       to indicate a synchronous response/fault is expected.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action, wsa:To and wsa:MessageID
       are required.  If the wsa:ReplyTo and/or wsa:FaultTo are included then
       they must be set to wsa:Anonymous.
      </desc>
      <success>
       Service responds with a fault on the HTTP back-channel, with the
       appropriate WS-Addressing headers (wsa:Action and wsa:RelatesTo at
       a minimum).
      </success>
     </test>
     <test name="Async Faulting Echo+WSA">
      <desc>
       Client sends a faulting Echo message with WS-Addressing headers
       to indicate an asynchronous response/fault is expected.
       Exact list of WS-Addressing headers is implementation specific,
       however wsa:Action, wsa:To, wsa:MessageID
       and wsa:FaultTo are required.  The wsa:FaultTo must refer to an
       addressable endpoint.
      </desc>
      <success>
       Service responds with a fault on a new connection to the wsa:FaultTo
       EPR specified in the Echo message. On the original connection an
       HTTP 202 is returned. The fault message will contain the appropriate
       WS-Addressing headers (wsa:Action and wsa:RelatesTo at a minimum).
      </success>
     </test>
    </tests>
   </subheading>
  </part>

  <part name="Advanced Testing of WS-Addressing">
   The following tests will focus on interoperability testing of the
   WS-Addressing specification from a technical point of view. These tests
   are designed to ensure a common understanding of the most commonly
   used WS-Addressing features - as such, these tests will be more precise
   with respect to what is expected to be seen in the SOAP Envelopes.

   <tests>
    <test name="Notify+NoMsgID">
     <desc>
      Client sends Notify with wsa:Action header but no other WS-Addressing
      headers (not even a wsa:MessageID).
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Notify">
     <desc>
      Client sends Notify with wsa:Action and wsa:MessageID headers but no
      other WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Notify+None-ReplyTo">
     <desc>
      Client sends Notify with wsa:Action, wsa:MessageID and wsa:ReplyTo
      set to wsa:None but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Notify+None-FaultTo">
     <desc>
      Client sends Notify with wsa:Action, wsa:MessageID and wsa:FaultTo
      set to wsa:None but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Notify+None-ReplyTo/FaultTo">
     <desc>
      Client sends Notify with wsa:Action, wsa:MessageID and wsa:ReplyTo and
      wsa:FaultTo set to wsa:None but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Faulting Notify+NoMsgID+Anon-Reply/Fault">
     <desc>
      Client sends a faulting Notify with wsa:Action and wsa:ReplyTo and
      wsa:FaultTo set to wsa:Anonymous but no other WS-Addressing headers.
      Note: there is no wsa:MessageID header.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Faulting Notify+Anon-Reply/Fault">
     <desc>
      Client sends a faulting Notify with wsa:Action, wsa:MessageID and
      wsa:ReplyTo and wsa:FaultTo set to wsa:Anonymous but no other
      WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Faulting Notify+None-Reply/Fault">
     <desc>
      Client sends a faulting Notify with wsa:Action, wsa:MessageID and
      wsa:ReplyTo and wsa:FaultTo set to wsa:None but no other
      WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="MU-Faulting Notify">
     <desc>
      Client sends a Notify with wsa:Action, wsa:MessageID and
      an additional unknown SOAP Header that is marked with the mustUnderstand
      attribute set to 'true'.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Echo">
     <desc>
      Client sends an Echo with wsa:Action and wsa:MessageID
      but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action
      and wsa:RelatesTo at a minimum).
     </success>
    </test>
    <test name="Echo+Anon-ReplyTo">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID and
      wsa:ReplyTo set to wsa:Anonymous but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action
      and wsa:RelatesTo at a minimum).
     </success>
    </test>
    <test name="Echo+Anon-ReplyTo-Refs">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID and
      wsa:ReplyTo set to wsa:Anonymous but no other WS-Addressing headers.
      The wsa:ReplyTo must include some Reference Parameters.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:ReplyTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Echo+Anon-ReplyTo/FaultTo-Refs">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID and
      wsa:ReplyTo and wsa:FaultTo set to wsa:Anonymous but no
      other WS-Addressing headers.
      The wsa:ReplyTo and wsa:FaultTo must include some Reference Parameters
      and the wsa:ReplyTo's Reference Parameters must differ from the
      wsa:FaultTo Reference Parameters.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:ReplyTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Faulting-Echo+Anon-ReplyTo-Refs">
     <desc>
      Client sends a faulting Echo with wsa:Action, wsa:MessageID and
      wsa:ReplyTo set to wsa:Anonymous but no
      other WS-Addressing headers.
      The wsa:ReplyTo must include some Reference Parameters.
     </desc>
     <success>
      Service responds with a fault on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:ReplyTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Faulting-Echo+Anon-ReplyTo/FaultTo-Refs">
     <desc>
      Client sends a faulting Echo with wsa:Action, wsa:MessageID and
      wsa:ReplyTo and wsa:FaultTo set to wsa:Anonymous but no
      other WS-Addressing headers.
      The wsa:ReplyTo and wsa:FaultTo must include some Reference Parameters
      and the wsa:ReplyTo's Reference Parameters must differ from the
      wsa:FaultTo Reference Parameters.
     </desc>
     <success>
      Service responds with a fault on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:FaultTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test>
     <desc> -- test removed -- </desc>
     <success/>
    </test>
    <test name="Faulting-Echo+Addressable-ReplyTo+Anon-FaultTo-Refs">
     <desc>
      Client sends a faulting Echo with wsa:Action, wsa:MessageID,
      wsa:ReplyTo set to an addressable EPR, and wsa:FaultTo set to
      wsa:Anonymous but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with a fault on the HTTP
      back-channel, with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and any request's wsa:FaultTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Echo+None-ReplyTo">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID,
      wsa:ReplyTo set to wsa:None but no other WS-Addressing headers.
     </desc>
     <success>
      Service responds with an HTTP 202.
     </success>
    </test>
    <test name="Echo+Addressable-ReplyTo+None-FaultTo+mU">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID,
      wsa:ReplyTo set to an addressable EPR, wsa:FaultTo set to wsa:None
      and there is a SOAP Header with the mustUnderstand flag set to 'true'
      but the header is unknown to the service.
     </desc>
     <success>
      Service responds with a mustUnderstand fault on the HTTP back-channel.
     </success>
    </test>
    <test name="Echo+Addressable-ReplyTo/FaultTo+mU">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID,
      wsa:ReplyTo and wsa:FaultTo set to an addressable EPR
      and there is a SOAP Header with the mustUnderstand flag set to 'true'
      but the header is unknown to the service.
     </desc>
     <success>
      Service responds with an mustUnderstand fault on the HTTP back-channel.
     </success>
    </test>
    <test name="Echo+No-Action+Addressable-ReplyTo">
     <desc>
      Client sends an Echo without a wsa:Action SOAP Header but
      does inlcude the wsa:MessageID SOAP Header and
      wsa:ReplyTo SOAP Header set to an addressable EPR.
     </desc>
     <success>
      Service responds with WS-Addressing
      "Message Addressing Header Required" Fault sent to the
      wsa:ReplyTo EPR.
     </success>
    </test>
    <test name="Faulting-Echo+Addressable-ReplyTo">
     <desc>
      Client sends a faulting Echo with wsa:Action, wsa:MessageID
      and an addressable wsa:ReplyTo.
     </desc>
     <success>
      Service responds with a fault to the wsa:ReplyTo EPR with
      the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and any request's wsa:ReplyTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Faulting-Echo+Addressable-ReplyTo+Anon-FaultTo">
     <desc>
      Client sends a faulting Echo with wsa:Action, wsa:MessageID,
      an addressable wsa:ReplyTo and the wsa:FaultTo EPR set to wsa:Anon.
     </desc>
     <success>
      Service responds with a fault on the HTTP back-channel with
      the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and any request's wsa:FaultTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Echo+Addressable-ReplyTo">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID and
      an addressable wsa:ReplyTo.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse to the wsa:ReplyTo
      EPR with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:ReplyTo's Reference Parameters
      at a minimum).
     </success>
    </test>
    <test name="Echo+mU-Headers">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID, wsa:From,
      wsa:ReplyTo and wsa:FaultTo with any appropriate values. All of the
      headers are marked with the mustUnderstand attribute set to 'true'.
     </desc>
     <success>
      Service responds with the appropriate EchoResponse to the wsa:ReplyTo
      EPR with the appropriate WS-Addressing headers (wsa:Action,
      wsa:RelatesTo and the request's wsa:ReplyTo's Reference Parameters
      at a minimum). No mustUnderstand Fault must be generated.
     </success>
    </test>
    <test name="Echo+Unreachable-ReplyTo">
     <desc>
      Client sends an Echo with wsa:Action, wsa:MessageID,
      and wsa:ReplyTo set to an unreachable URI.
     </desc>
     <success>
      A WS-Addressing "Destination Unreachable" fault it generated.
      However, where does it go? If anywhere.
      There are two options: <br/>
      1) an HTTP 202 is returned and the fault is never seen by the client<br/>
      2) the fault is returned on the HTTP back-channel (ie. wsa:FaultTo).<br/>
      But what if the wsa:FaultTo is unreachable as well???
     </success>
    </test>
   </tests>
  </part>

 </section>

 <section title="WSDL">
  <populate url="sc003.wsdl"/>
 </section>

 <section title="Findings">
  <num>
   Test 2.26 (Echo+Unreachable-ReplyTo) introduces some interesting aspects to the
   process of responses when the destination EPR is unreachable. For example,
   if the destination EPR for a response message is not reachable then should the
   service notify the sender of the request message even if the wsa:ReplyTo and
   wsa:FaultTo are non-anonymous?
   <p/>
   There are three cases the group focused on:<br/>
   <num>
    ReplyTo/FaultTo are both unreachable<br/>
    This covers the case where there is no FaultTo and therefore defaults to 
    the ReplyTo EPR.<br/>
    In this case the client should expect to get back an HTTP 202 response.
    If the server is able to determine that the response's destination EPR is
    problematic (either invalid or unreachable) then the server may choose to 
    send back a fault (e.g. wsa:InvalidAddress) back to the client if the 
    HTTP connection still happens to be available. However, the client should 
    not rely on this.<br/>
   </num>
   <num>
    ReplyTo is unreachable, FaultTo is addressable and reachable<br/>
    In this case an HTTP 202 should be returned back to the client.  Any fault
    generated (either from the application or from trying to connect to the 
    ReplyTo EPR) should be sent to the FaultTo EPR.<br/>
   </num>
   <num>
    ReplyTo is unreachable, FaultTo is anonymous<br/>
    In this case any fault generated is sent back to the client on the HTTP 
    back-channel.
   </num>
   As is the case whenever faults are generated, they may not be transmitted 
   due to security concerns.
  </num>

  <num>
   An issue was detected around the processing model of one-way message and faults
   related to these messages.  While normally one-way messages are considered to
   be "fire-and-forget" messages, there can still be faults generated from them.
   For example, if a one-way message is sent, without Reliable Messaging, to an 
   endpoint that requires WS-ReliableMessaging to be used then a fault will be
   generated.  If (though it is not a requirement) the service decides to send 
   back a fault to the client then the service will run into a problem.  Per the
   WS-Addressing spec (section 
   <a href="http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/#formreplymsg">3.4</a>), 
   all responses (faulting or non-faulting)
   must include a wsa:RelatesTo header.  If the one-way message did not include
   a wsa:MessageID then the fault will not be able to include a wsa:RelatesTo
   header - and the WS-Addressing spec says that the service must fault (again)
   due to this.  In cases where a sender is interested in seeing faults that 
   might be generated, they really should include a wsa:MessageID on all outgoing
   messages.
  </num>
 </section>

 <section title="Change History">
  <changes>
   <change date="2008/01/24" who="Doug Davis">Initial draft</change>
   <change date="2008/07/06" who="Doug Davis">Convert to xml</change>
   <change date="2008/10/20" who="Doug Davis">Misc typos</change>
   <change date="2009/09/02" who="Doug Davis">Add findings about msgID</change>
  </changes>
 </section>

</scenario>
