- 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