← Prev in month ← Prev in thread
Next in thread → Next in month →

[Issue 2] Version 2: How to implement SCA callbacks using SOAP --a proposal

From
Anish Karmarkar <>
Date
2008-08-22T06:18:19+00:00
ID
Thread
[Issue 2] Version 2: How to implement SCA callbacks using SOAP --a proposal
I took an action at the f2f to update the proposal that I had sent out
[1] based on the feedback received during the f2f and the mailing list.

Based on the feedback, I have made two changes: a) changed the case of
'must' and b) instead of saying "... callback EPR obtained from *the*
request message ...", it now says "... callback EPR obtained from *a*
request message ..."

V2 does not the incorporate the comments/feedback for which there
wasn't an agreement.

-Anish

--

[1]
http://lists.oasis-open.org/archives/sca-bindings/200807/msg00027.html

Proposal v2:

1) Every request message that invokes the forward
interface
MAY contain the wsa:From SOAP header block. The wsa:From header block,
if present, specifies the Callback EPR. If wsa:From header block is not
present, then the wsa:ReplyTo, if present, specifies the Callback EPR.
If neither wsa:From nor wsa:ReplyTo are present in the request message
of the forward interface, the service MUST generate a SOAP Fault.

2) Every request message that invokes the forward interface MUST
contain
the wsa:MessageID SOAP header block. If a request message that invokes
the forward interface does not contain the wsa:MessageID then the
service
must MUST generate a
SOAP Fault.

3) When the service wants to invoke the callback interface, it utilizes
the Callback EPR obtained from the a request message, as specified in
step
1, that invoked the forward interface. Once the Callback EPR is
selected,
the service MUST follow the rules defined in WS-Addressing 1.0  section
3.3 to invoke operations on the callback interface. In addition, when
the
service invokes the callback interface, it MUST include a wsa:RelatesTo
SOAP header block. The wsa:RelatesTo SOAP header block MUST have the
relationship
type value of "http://docs.oasis-open.org/opencsa/sca-bindings/callback"
and the related message id is the wsa:MessageID of the message from
which
the Callback EPR was obtained.

Scenarios:

S: service with a bidirectional interface

R: reference connected to service S

The wire binding (in both directions) uses SOAP.

The forward interface consists of only one one-way operation: YouRIt()

The callback interface consists of only one one-way operation:
NoYouRIt()

R invokes YouRIt(). Let's call this invocation R1 and it sets the
callback
address to RC1. S
then calls NoYouRIt() twice: S1 and S2

R invokes YouRIt() again. Let's call this invocation R2 and it sets the
callback address to RC1.
S then calls NoYouRIt() once: S3

R invokes YouRIt(). Let's call this invocation R3 and it sets the
callback
address to RC2. S
then calls NoYouRIt() twice: S4 and S5.

Wire messages:

R1:

<soap:Envelope ...>

 <soap:Header>

   <wsa:From>

     <wsa:Address>http://example.com/callback</wsa:Address>

     <wsa:ReferenceProperties>

       <myNS:SomeID>1</myNS:SomeID>

     </wsa:ReferenceProperties>

   </wsa:From>

   <wsa:MessageID>urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6</wsa:messageID>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>

S1, S2:

<soap:Envelope ...>

 <soap:Header>

   <wsa:To>http://example.com/callback</wsa:To>

   <myNS:SomeID>1</myNS:SomeID>

   <wsa:RelatesTo RelationshipType="http://docs.oasis-open.org/opencsa/sca-bindings/callback">

   urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

   </wsa:RelatesTo>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>

R2:

<soap:Envelope ...>

 <soap:Header>

   <wsa:From>

     <wsa:Address>http://example.com/callback</wsa:Address>

     <wsa:ReferenceProperties>

       <myNS:SomeID>1</myNS:SomeID>

     </wsa:ReferenceProperties>

   </wsa:From>

   <wsa:MessageID>urn:uuid:f81d4fae-8dec-11d0-a765-00a0c91e6bf6</wsa:messageID>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>

S3:

<soap:Envelope ...>

 <soap:Header>

   <wsa:To>http://example.com/callback</wsa:To>

   <myNS:SomeID>1</myNS:SomeID>

   <wsa:RelatesTo RelationshipType="http://docs.oasis-open.org/opencsa/sca-bindings/callback">

   urn:uuid:f81d4fae-8dec-11d0-a765-00a0c91e6bf6

   </wsa:RelatesTo>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>

R3:

<soap:Envelope ...>

 <soap:Header>

   <wsa:From>

     <wsa:Address>http://example.com/callback-other</wsa:Address>

     <wsa:ReferenceProperties>

       <myNS:SomeID>2</myNS:SomeID>

     </wsa:ReferenceProperties>

   </wsa:From>

   <wsa:MessageID>urn:uuid:f81d4fae-9dec-11d0-a765-00a0c91e6bf6</wsa:messageID>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>

S4, S5:

<soap:Envelope ...>

 <soap:Header>

   <wsa:To>http://example.com/callback-other</wsa:To>

   <myNS:SomeID>2</myNS:SomeID>

   <wsa:RelatesTo RelationshipType="http://docs.oasis-open.org/opencsa/sca-bindings/callback">

   urn:uuid:f81d4fae-9dec-11d0-a765-00a0c91e6bf6

   </wsa:RelatesTo>

    ...

 </soap:Header>

 <soap:Body>

   ...

 </soap:Body>

</soap:Envelope>
← Prev in month ← Prev in thread
Next in thread → Next in month →