- From: Doug Davis <dug@us.ibm.com>
- Date: Tue, 10 Feb 2009 17:06:55 -0500
- To: "Chou, Wu (Wu)" <wuchou@avaya.com>
- Cc: public-ws-resource-access@w3.org
- Message-ID: <OFD86A2F04.F5FC78B0-ON85257557.00469BCA-85257559.007985F0@us.ibm.com>
Wu,
In issues 6340 and 6425 you talk about "dynamic event sources" and the
notion of filtering notifications based on sessions created by clients. In
these cases you talk about using a ref-parameter of the Event Source to
indicate which session this Subscribe is for. I decided to go and read the
WS-Session specification that you referenced and a couple of things come
to mind:
- The idea of having a user of an EPR (the subscriber in this case) tweak
the EPR of a service (the event source) violates WS-Addressing by no
longer treating the ref-params of EPRs like opaque entities. So, this part
of WS-Session is a very large concern for me. This, in essence, pretends
that there are multiple EPRs out there - one EPR for each Session created.
However,.... (see next bullet)
- based on the document, it appears that the endpoint to which the
StartSession() is sent is the same endpoint to which the Subscribe() is
sent - modulo the tweaking of the EPRs. This means that you really only
have one endpoint/service - not multiple. In particular, if you were to
generate WSDL for the service you would only have one WSDL and one EPR in
there.
- If I could take ownership of the spec for a moment (pretend to be king
;-), there are two possible ways I would address this:
1 - make StartSession create an implicit subscription under the covers. I
think WS-Session says that the client must create a subscription anyway
(to the same service provider), so why not just have them pass in the
Subscriber's notification EPR on the StartSession and avoid the overhead
of another message exchange. The EndSession can terminate the
subscription too. This has the other benefit that it avoid the WS-E vs
WS-N discussion and lets each impl make their own choice. Both WS-E and
WS-N can be configured to send the same Notifications (soap messages) so I
believe that the client would be unaware of the choice being made. If I'm
wrong and the client doesn't have to create a subscription, then just make
the notification EPR optional and use that as a signal to decide whether
to create the implicit subscription.
2 - If the StartSession and Subscribe really do need to be separate
operations, then I would move the SessionID stuff to be a filter. For
example:
<s:Envelope>
<s:Header>
</s:Header>
<s:Body>
<wse:Subscribe>
<wse:Delivery> ... </wse:Delivery>
<wse:Filter Dialect="urn:aps:WSSessionID">
<aps:sessionID> 1234 </aps:sessionID>
</wse:Filter>
</wse:Subscribe>
</s:Body>
</s:Envelope>
When I compare this what WS-Session currently recommends:
<s:Envelope>
<s:Header>
<aps:sessionID xmlns:aps="..."> 1234 </aps:sessionID>
</s:Header>
<s:Body>
<wse:Subscribe>
<wse:Delivery> ... </wse:Delivery>
</wse:Subscribe>
</s:Body>
</s:Envelope>
The difference really isn't that big. In both cases the client would need
to know about something 'special'. In my version they need to know about
a dialect, in yours they need to know about a special reference parameter.
I think you can get the same end result but do so w/o violating
WS-Addressing and by using the natural extension points in WS-Eventing and
WS-Notification. From the server perspective, yes you need to know about
a new filter but that's really no different than what you have today. In
either case you need have to special code to look for the sessionID -
instead of looking for it as a SOAP header, just look for it as a child of
the wse:Filter element.
thanks
-Doug
______________________________________________________
STSM | Standards Architect | IBM Software Group
(919) 254-6905 | IBM 444-6905 | dug@us.ibm.com
Received on Tuesday, 10 February 2009 22:07:44 UTC