- From: Marc Hadley <Marc.Hadley@Sun.COM>
- Date: Mon, 09 Oct 2006 12:26:07 -0400
- To: Doug Davis <dug@us.ibm.com>
- Cc: public-ws-addressing@w3.org
- Message-id: <7099589D-C281-4E13-8C33-D88C9D183E2E@Sun.COM>
Looking at the message flow, I think WS-RM could make more use of
wsa:RelatesTo instead of inventing a new anon URI. Here's the same
message flow using the WS-A anon URI and making more use of
wsa:RelatesTo and @RelationshipType.
I think this formulation removes the requirement for additional WSRM-
specific anon URIs, let me know if I missed anything.
Marc.
Scenario: Client sends GetQuote to server unreliably. Server wants
to send GetQuoteResponse using RM so it must sent a CreateSequence
before I can send the GetQuoteResponse back.
Step 1 - Client sends GetQuote to Server
<soap:Envelope ...>
<soap:Header>
<wsa:To> http://stockquote.com </wsa:To>
<wsa:Action> foo:GetQuote </wsa:Action>
<wsa:MessageID> uuid://.../100 </wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://www.w3.org/.../anonymous</wsa:Address>
</wsa:ReplyTo>
</soap:Header>
<soap:Body>
<foo:GetQuote> IBM </foo:GetQuote>
</soap:Body>
</soap:Envelope>
Step 2 - Server sends an RM CreateSequence to the Client using the
only means it has available - the transport backchannel.
<soap:Envelope ...>
<soap:Header>
<wsa:To>http://www.w3.org/.../anonymous</wsa:To>
<wsa:Action> http://...wsrm/CreateSequence </wsa:Action>
<wsa:MessageID> uuid://.../101 </wsa:MessageID>
<wsa:RelatesTo RelationshipType="http://...wsrm/InitReliable">
uuid://.../100
</wsa:RelatesTo>
<wsa:ReplyTo>
<wsa:Address> http://stockquote.com </wsa:Address>
</wsa:ReplyTo>
</soap:Header>
<soap:Body>
<wsrm:CreateSequence> ... </wsrm:CreateSequence>
</soap:Body>
</soap:Envelope>
Notice the use of RelatesTo with a WSRM-specific @RelationshipType to
indicate that this message is a WSRM-specific response to the initial
request.
Step 3 - Client sends a CreateSequenceResponse to wsa:ReplyTo
<soap:Envelope ...>
<soap:Header>
<wsa:To> http://stockquote.com </wsa:To>
<wsa:Action> http://...wsrm/CreateSequenceResponse </wsa:Action>
<wsa:RelatesTo> uuid://.../101 </wsa:RelatesTo>
</soap:Header>
<soap:Body>
<wsrm:CreateSequenceResponse> ... </wsrm:CreateSequenceResponse>
</soap:Body>
</soap:Envelope>
Step 4 - Having not received the GetQuoteResponse, the Client uses
MakeConnection to allow it to flow back
<soap:Envelope ...>
<soap:Header>
<wsa:To> http://stockquote.com </wsa:To>
<wsa:Action> http://...wsrm/MakeConnection </wsa:Action>
<wsa:ReplyTo>
<wsa:Address>http://www.w3.org/.../anonymous</wsa:Address>
</wsa:ReplyTo>
<wsa:RelatesTo RelationshipType="http://...wsrm/InitialRequest">
uuid://.../100
</wsa:RelatesTo>
</soap:Header>
<soap:Body>
<wsrm:MakeConnection>
</wsrm:MakeConnection>
</soap:Body>
</soap:Envelope>
Notice the use of the wsa:RelatesTo with a WSRM-specific
@RelationshipType to indicate that this message is requesting a
response to the initial request message.
Step 5 - Server uses the backchannel to let the GetQuoteResponse flow
back to the Client
<soap:Envelope ...>
<soap:Header>
<wsa:To>http://www.w3.org/.../anonymous</wsa:To>
<wsa:Action> foo://GetQuoteResponse </wsa:Action>
<wsa:RelatesTo> uuid://.../100 </wsa:RelatesTo>
<wsrm:Sequence> ... </wsrm:Sequence>
</soap:Header>
<soap:Body>
<foo:GetQuoteResponse> 139.0 </foo:GetQuoteResponse>
</soap:Body>
</soap:Envelope>
Notice the wsa:RelatesTo points to the GetQuote request message and
it is sent using RM (the Sequence header), and that the SOAP Envelope
looks exactly like it would if it had been sent on the original
transport backchannel - meaning, the wsa:To is derived from the
wsa:ReplyTo from the GetQuote request message not the MakeConnection.
---
Marc Hadley <marc.hadley at sun.com>
Business Alliances, CTO Office, Sun Microsystems.
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Monday, 9 October 2006 16:26:18 UTC