- From: Marc Hadley <Marc.Hadley@Sun.COM>
- Date: Thu, 12 Oct 2006 16:07:46 -0400
- To: David Hull <dmh@tibco.com>
- Cc: Doug Davis <dug@us.ibm.com>, public-ws-addressing@w3.org
- Message-id: <ABFD067A-2A5E-4148-96CA-26B7FFE6AACD@Sun.COM>
The message in step 2 is still a response in WS-A and SOAP binding terms. Its not the output message from the WSDL because the use of RM is inserting additional messages into the exchange. Marc. On Oct 12, 2006, at 1:37 PM, David Hull wrote: > According to section 5 of the SOAP binding, if [reply endpoint] is > anonymous, then "any response MUST be the > http://www.w3.org/2003/05/soap/mep/OutboundMessage property of the > same > instance of the SOAP request-response MEP". There is no definition of > "response" in this section, but given that we define "response > endpoint" > as [reply endpoint] or [fault endpoint] and lacking any other > plausible > interpretation, the intent is clear: a response is a reply or a fault. > > A reply MUST be formulated according to the rules in section 3. > Section > 4 of the WSDL spec says that the reply message would have an > [action] of > foo:GetQuoteResponse and otherwise follow the WSDL operation > description > (assuming this description is WSA-aware). In other words, the message > in step 5 is the reply. > > The server below is behaving incorrectly in step 2. The [reply > endpoint] of anonymous requires it to send the message it sends in > step > 5 in step 2 instead. > > > Marc Hadley wrote: >> 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. >> >> > --- Marc Hadley <marc.hadley at sun.com> Business Alliances, CTO Office, Sun Microsystems.
Attachments
- application/pkcs7-signature attachment: smime.p7s
Received on Thursday, 12 October 2006 20:07:57 UTC