- From: David Hull <dmh@tibco.com>
- Date: Thu, 14 Sep 2006 10:19:50 -0400
- To: Doug Davis <dug@us.ibm.com>
- Cc: public-ws-addressing@w3.org
- Message-id: <45096506.7090405@tibco.com>
Having been in one of those off-line chats, I now agree that this is an issue because of just the use-case that Doug gives. I also agree it's nothing to do with WS-RX. I wouldn't say that the culprit is "required" per se. If an endpoint only supports anonymous, probably because it's an old-style synchronous-only server, then it won't support WS:foo. For this reason I tend to think that we got CR22 wrong in that "none" should be prohibited like everything else for "required", but that's a separate question (an old-style server won't know how to handle none). Of the three, "required" states clearly that the endpoint accepts anonymous (and none) and nothing else. The other two, strictly speaking, only say that anonymous is or is not in the set of accepted addresses, but say nothing about what other addresses might be accepted. The inference that in this case "clients can pass in www.ibm.com" is not right. With optional, clients don't know whether they can pass in www.ibm.com or not, while with "required" they know they can't. Loosening "required" to "optional" in order to accommodate WS-Foo loses information. As I recall, one of the original recommendations of the Async Task Force was that there be some way to indicate what set of addresses an endpoint would accept for response endpoints, at least as far as a binding (e.g., I can send responses by HTTP or email). We don't handle this directly, but it will need to be done at some point (probably as a policy assertion?). We should at least make sure we've left room for that. One way forward would be to clarify that "optional" and "prohibited" make no statement about what other addresses might or might not be allowed for response endpoints. This in turn strongly implies that a client should /not/ assume a given non-anon address would work. Everything not specifically permitted is unspecified, and so effectively prohibited in the absence of other markers. The WSDL in the use case would then have anonymous "optional" and an additional "foo" element. Client A would see optional, and nothing else, and know that it couldn't use www.ibm.com (strictly speaking, that it can't assume that it can use it). From client A's point of view, "optional" with nothing else is essentially the same as "required". From client B's point of view there's a difference: "optional" allows for "foo" while "required" doesn't. I would argue that this much, at least, is fine for CR as it's just clarifying the existing semantics (which were not what one might naturally infer). We might even go so far as to explicitly prohibit addresses not specifically allowed. Whether that's a semantic change is open to interpretation. Now, what about another server that supports both anonymous and, say, email? In lieu of a more complete description, we could invent a new element for "anything not specifically defined elsewhere". This would leave us no worse off than we are now, as it's basically what's been inferred anyway. With "optional" and "anything else", client A knows it can use www.ibm.com. Client B should interpret "optional" and "anything" as excluding "foo", but interpret "optional", "foo" and "anything" as including "foo". I don't know whether this would be too much for CR. It would be better if we had a more fleshed-out system where I could say things like "anon", "none", "foo" or email, or "email" and "foo" (but implicitly not anon) and such, but that's definitely too much for CR. The best we can do is make sure that such a thing would work as an add-on. With the clarification above, I believe it will. Doug Davis wrote: > > After some off-line chats I realized that I may need to elaborate on > why I came to the conclusion that this solely a WSA issue and why > there's this implicit restriction that no other WS-* spec can define a > new special non-addressable URI. Let's examine the following use-case: > > - a server only supports sync responses - so it can support "anon", > "none" and "foo" replyTo's. 'foo' is a new magic URI that some spec > defined > - client A only knows about WSA > - client B knows about WSA and WS-foo > - the server, knowing it wants to tell people it can only support sync > responses adds the wsaw:Anonymous="required" wsdl marker > > Client A sees that marker and sets replyTo to 'anon' - all is ok > Client B knows that the server supports WS-foo, but the wsaw:Anonymous > marker says only "anon" and "none" are supported > Support for Client B + WS-foo appears to be restricted. > > Even if the server adds another wsdl marker that say "replyTo can be > foo" - what is client B supposed to do when it sees conflicting wsdl > markers? > The server can not set wsaw:Anonymous to 'optional' because that mean > that clients can pass in "www.ibm.com" - which isn't what the server > wants. > What can the server put in its WSDL to get the desired results? > > Its because I don't know the answer to these questions that I come to > the conclusion that the use of wsaw:Anonymous="required" implicitly > means that no other WS-* spec can do what WSA has done and define a > new non-addressable URI for use in the replyTo and faultTo headers. > And, I think this makes it a WSA issue and not an RM issue - RM is > just the first unlucky WS-* spec to expose this problem. :-) > > thanks, > -Doug > > > > *Doug Davis/Raleigh/IBM@IBMUS* > Sent by: public-ws-addressing-request@w3.org > > 09/13/2006 09:52 AM > > > To > public-ws-addressing@w3.org > cc > > Subject > Question on CR33 > > > > > > > > > > > After Monday's conf call I was thinking about the "status quo" option > and I was wondering about the implications of that. As currently > worded, the wsaw:Anonymous=required option would prevent someone from > using any URI in wsa:ReplyTo except "anonymous". This is a bit too > restricted because WSA itself, during its work on the spec, found the > need to define another non-addressable URI: "none". I believe there > was some other CR which was adopted to loosen the wording a bit to > allow for this special case. So, the question that I keep trying to > come to terms with is whether or not the WG is aware of the implicit > restriction of the "status quo" option. What it basically means is > that no other WS-* spec can ever define its own non-addressable URI to > be used in wsa:ReplyTo when this WSDL marker is used. Ever. Ignore > RM, or another variant of a URI that means 'the backchannel'. What if > some other spec wanted to do exact what WSA did and define a new URI > to mean something special - e.g. like 'none' means 'trash it'? They > can't do it. Because the semantics of this wsdl marker are tied to > specific URI values (and, as of now, this list isn't extensible) and > not to whether or not the server is willing/able to send async > responses, WSA has in essence banned other specs from doing exactly > what it itself has found a need to do: extend the list of 'special > URIs'. While this is obviously an option, is it really the intent of > the WG to not allow this flexibility for future specs? > > thanks > -Doug
Received on Thursday, 14 September 2006 14:20:10 UTC