- From: Doug Davis <dug@us.ibm.com>
- Date: Wed, 18 Feb 2009 09:30:08 -0500
- To: Gilbert Pilz <gilbert.pilz@oracle.com>
- Cc: "public-ws-resource-access@w3.org" <public-ws-resource-access@w3.org>, public-ws-resource-access-request@w3.org
- Message-ID: <OF229D2DAD.287494A4-ON85257562.000BA74F-85257562.000DC219@us.ibm.com>
Gil,
I'm ok with #1 because in #2 you say the extra header came from an EPR.
However, in #3 you when you talk about how the <sc009:OrderID>
ref-param/header ties the lifetimes of two objects (the PO and the
Subscription) I get worried. This is semantics that are not defined by
anything. Yes the Subscribe() is sent to the PO but the secondary object
created (the subscription) may or may not be tied to the PO. If the
semantics of the PO subscription service are defined to say they are
linked then that's ok - but without this explicit statement I don't think
people can assume anything. However, the usecase that Wu is talking about
is slightly different that this. I believe in his case there is only one
subscription manager/source - in your case each PO is its own Subscription
manager/source. Another difference is that I believe Wu wants the client
to populate the ref-params with a SessionID while you (correctly) treat
the ref-params as opaque entities.
If we didn't have the history/reasoning behind why this additional
sentence is being added it probably wouldn't be that big of a concern to
me - but because its being used as a precursor for doing things that
violate WS-Addressing I don't think we should do it. There shouldn't even
be a discussion about this. People will have references to event sources
(EPR) and they'll send Subscribes to those EPRs. If they want to subset
the event stream coming form that event source then they'll use a filter.
WS-Eventing already says all of this - why do we need to say more? Why
would we even talk about when to use ref-params vs filters when any
additional "advice" that we put into WS-Eventing related to this will only
put the idea of doing 'bad' things into people's heads - ie. implicitly
encourage it.
As for #4 and the * - sure.
thanks
-Doug
______________________________________________________
STSM | Standards Architect | IBM Software Group
(919) 254-6905 | IBM 444-6905 | dug@us.ibm.com
Gilbert Pilz <gilbert.pilz@oracle.com>
Sent by: public-ws-resource-access-request@w3.org
02/18/2009 07:25 PM
To
"public-ws-resource-access@w3.org" <public-ws-resource-access@w3.org>
cc
Subject
[Issue 6425] redux
Let me try to back-up a bit on this issue. I see it as being composed of
the following points:
1.) We need to make clear to Subscribers / Event Sinks that the Event
Source MAY take into account additional information that appears in the
SOAP Headers of the request that carries the wse:Subscribe message when it
creates a subscription. This information may affect the contents,
structure, and delivery of the Notifications in that subscription. For
example, if the Subscriber sends this:
<s12:Envelope . . .>
<s12:Header>
<wsa:Action>http://www.w3c.org/2009/02/Subscribe</wsa:Action>
<wsa:MessageID>uuid:d7c5726b-de29-4313-b4d4-b3425b200839</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://www.example.com/MyEventSink</wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://webservice.bea.com/PO/EventSource</wsa:To>
<sc009:OrderID>PJ-73f250</sc009:OrderID>
</s12:Header>
<s12:Body>
<wse:Subscribe>
<wse:Delivery>
<wse:NotifyTo>
<wsa:Address>
http://www.example.com/MyEventSink/POUpdates
</wsa:Address>
</wse:NotifyTo>
</wse:Delivery>
</wse:Subscribe>
</s12:Body>
</s12:Envelope>
it may result in the Event Sink receiving different information than if
the Subscriber had sent this:
<s12:Envelope . . .>
<s12:Header>
<wsa:Action>http://www.w3c.org/2009/02/Subscribe</wsa:Action>
<wsa:MessageID>uuid:d7c5726b-de29-4313-b4d4-b3425b200839</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://www.example.com/MyEventSink</wsa:Address>
</wsa:ReplyTo>
<wsa:To>http://webservice.bea.com/PO/EventSource</wsa:To>
<sc009:OrderID>DR-2a673c</sc009:OrderID>
</s12:Header>
<s12:Body>
<wse:Subscribe>
<wse:Delivery>
<wse:NotifyTo>
<wsa:Address>
http://www.example.com/MyEventSink/POUPdates
</wsa:Address>
</wse:NotifyTo>
</wse:Delivery>
</wse:Subscribe>
</s12:Body>
</s12:Envelope>
2.) When Event Sources do this sort of thing they SHOULD include this
"additional information" in the form of EPRs. For example, a purchase
order response type might be defined as follows:
<xs:complexType name="OrderRespType">
<xs:sequence>
<!-- Info about the newly created purchase order. -->
<xs:element name="OrderInfo" type="tns:OrderInfoType"/>
<!-- EPR to which the consumer may send a WS-Eventing Subcribe message
in order to
receive notifications about the ongoing status of the newly
created purchase order.
-->
<xs:element name="SubscriptionEPR" type="wsa:EndpointReferenceType"/>
<xs:any namespace="##other" processContents="lax" minOccurs="0"
maxOccurs="unbounded"/>
</xs:sequence>
<xs:anyAttribute namespace="##other" processContents="lax"/>
</xs:complexType>
The semantic of the purchase order system are such that, when it creates
an order with an ID of "DR-2a673c" it will mint a SubscriptionEPR like so:
<sc009:SubscriptionEPR>
<wsa:Address>http://webservice.bea.com/PO/EventSource</wsa:Address>
<wsa:ReferenceParameters>
<sc009:OrderID>DR-2a673c</sc009:OrderID>
</wsa:ReferenceParameters>
</scc09:SubscriptionEPR>
3.) We should advise developers of Event Sources that using additional
elements in the headers is not meant to replace the filter facility built
into the WS-Eventing protocol. In this case, the semantics of including
the OrderID in the header of a Subscribe message are "I want to receive
Notifications about this purchase order until such time as the process has
completed, at which point I want the subscription to be terminated." The
reason we are using a header instead of defining a filter is that we want
to tie the lifetime of the subscription to the lifetime of the purchase
order; as far as I know there is no way of specifying this using the
current filter semantics. The point is: if what you are doing can be done
using a filter, you should use a filter.
4.) Implementations should note that (2) contradicts the Architecture of
the World Wide Web, Volume One [1] by using reference properties to
identify resources (in our example case the subscription service for a
PO). This use of reference properties to identify resources may lead to
situations in which your resources are not readily accessible via HTTP.*
If people agree on these points, I'll write up a concrete proposal that
embodies them.
- gp
[1] http://www.w3.org/TR/webarch/
* Would should just sprinkle statements like this throughout the WS-RA
specs everywhere we talk about the use of reference parameters.
Received on Thursday, 19 February 2009 02:30:51 UTC