OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-rx message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: Comment on WSDL spec: use of Anonymous Element


Ok now I understand. But what I don't understand is why the ReplyTo is
important given that MakeConnection is a logical one-way.

Paul


Alastair Green wrote:
> Doug,
>
> I think I'm connecting, if you'll pardon the pun.
>
> 1. As I read WS-A, the [destination endpoint][address] must be set to
> [reply endpoint][address] for a reply.
>
> 2. If [reply endpoint] is omitted (as per the CD example), then [reply
> endpoint] = anon, by default.
>
> 3. If [destination endpoint] = "anon-URI?id={uuid}", then [destination
> endpoint] <> [reply endpoint][address] (which was simple, unornamented
> anon-URI), which contradicts premise 1.
>
> Does that make sense? If so, then I think you would need to set [reply
> endpoint] to none, explicitly, to avoid that clash (given RM's current
> approach). But this causes
>
> 4. The WS-A processor that sent MakeConnection to get very confused.
> It wasn't expecting anything but an HTTP 200 series by way of a
> response, but is about to get a full-scale SOAP message bounding back.
>
> +++
>
> Further thoughts, which continue, in my mind, to question the current
> RM approach, but which may ease the WSA W problem.
>
> a) You could have defined an extension element in the [reply endpoint]
> for the UUID.
>
> b) Or, you could have chosen to send the UUID in the body element.
>
> c) In either case, this could team up with setting [reply endpoint] to
> anon.
>
> d) As in 3. above, you shouldn't then set response [destination
> endpoint] to anon?id={uuid}.
>
> e) So, you need to set [reply endpoint] to anon, /and/ set
> [destination endpoint][address] to anon.
>
> f) which begs the question, where does the UUID go?
>
> g)  If you passed an extension element UUID, or a UUID in the body
> element, and then passed it back as an extension element in the anon
> EPR that should be OK, because you have followed the rules for reply
> formulation with respect to the [destination
> endpoint][address]/[reference parameters]. The fact you have chosen to
> put an extension element in the response is WS-A 3.3/3.4 legal, as I
> read it. That's a higher-layer behaviour that does not contradict WS-A
> base behaviour, which is constrained.
>
> +++
>
> Why is g) not viable in your view? The processors that need to
> understand the body/extension UUID element are the RM senders and
> responders (not the WS-A processors, which passively pass on the UUID
> to the RM receiver of MakeConnection, and pass on the extension
> element to the RM receiver of the response).
>
> In other words, the awareness of RM-ness that is demanded in
> formulating MakeConnection, and in replying to it, resides in the same
> place, and at the same level, as in the current (CD) solution.
>
> The difference being: that the MakeConnection is now a regular [reply
> endpoint] = anon. At which point special WSAW rules are not needed.
>
> I don't see any lesser or greater problem with intermediaries, onward
> transmission etc than would apply with the current solution, if that
> is a concern. On this point, I think I may be missing something, or
> misunderstanding your area of concern?
>
> So, to summarize:
>
> 1. asimple-non out, special, ornamented-anon back is a problem.
> 2. none out, anon back is a problem.
> 3. extension element UUID out, extension element UUID back, is no
> different, in layer terms, than body UUID out, ornamented address
> back, i.e. is not a problem.
> 4. anon out means no problem with anon = required.
>
>
> * * *
>
> My last point was indeed completely beside the point of your issue :-)
> -- it is an independent issue about WSAW, and a limitation that the
> proposed syntax seems to impose by applying the flag across all
> "response endpoints".
>
> Alastair
>
> Doug Davis wrote:
>>
>> Alastair,
>>   We did consider adding some extra metadata to the EPR (outside of
>> the wsa:Address and ref-p's), but there's a problem - this metadata
>> is not copied over into the response message - just the wsa:Address
>> and ref-p's are.  This means that any data placed elsewhere in the
>> EPR is lost once the message is serialized.  So unless we assume the
>> impl can hold on to the original EPR for the entire message path
>> (which we can't in distributed systems), the identity part must be in
>> either the address or ref-p's.  And, as you said, ref-p's aren't good
>> for this.
>>
>>   What's interesting about your anon?unique-id example is that that
>> solution might work very nicely (we talked about this in the past) -
>> but as you said it would require WSA to say anon URIs 'start with...'
>> - and WSA is closed :-(
>>
>>   I got a bit lost on your last point - it almost sounded like a
>> complaint about the current WSA WSDL spec instead of my issue -  or
>> did I not follow it?
>>
>>   I noticed that on the agenda for tomorrow's WSA call (I think its
>> tomorrow) is a CR issue that mentioned how this wording in the WSDL
>> spec prevents the use of "none".  I can't help but think that both
>> issues (mine and the other CR issue) would be solved nicely if the
>> wording were turned around a bit and said something about how this
>> flag indicates whether or not the endpoint supports addressable
>> endpoints in the response EPRs.  Not sure of the exact wording, but
>> if instead of taking about specific URIs (like anon and none) it
>> talked about whether the endpoint supported the notion of creating it
>> own connections to the EPR then it wouldn't need to get into the
>> business of listing all of the URIs that are valid.  And I think it
>> would relay the exact same information.
>>
>> thanks
>> -Doug
>>
>>
>>
>> *Alastair Green <alastair.green@choreology.com>*
>>
>> 08/04/2006 10:57 AM
>>
>> 	
>> To
>> 	Doug Davis/Raleigh/IBM@IBMUS
>> cc
>> 	public-ws-addressing@w3.org, public-ws-addressing-request@w3.org,
>> ws-rx@lists.oasis-open.org, abbieb@nortel.com, aclark@novell.com,
>> akira.tanaka.pr@hitachi.com, aleyfer@actional.com,
>> anash@reactivity.com, andreas.bjarlestam@ericsson.com,
>> anil.edakkunni@soa.com, anil.john@jhuapl.edu,
>> Anish.Karmarkar@oracle.com, Anthony Nadalin/Austin/IBM@IBMUS,
>> asakala@iona.com, ash@rainingdata.com, ashok.malhotra@oracle.com,
>> asirveda@microsoft.com, atarashi@sv.nec-labs.com, atmanes@gmail.com,
>> audet@nortel.com, barreto@adobe.com, bhakti.mehta@sun.com,
>> blake.dournaee@intel.com, bob.freund@hitachisoftware.com,
>> bob.sunday@pwgsc.gc.ca, b.eckenfels@seeburger.de,
>> carolina.canales@ericsson.com, chamikara@wso2.com,
>> chappell@sonicsoftware.com, Charles Levay/Raleigh/IBM@IBMUS,
>> chouthri@sv.nec-labs.com, Christopher B Ferris/Waltham/IBM@IBMUS,
>> Christopher.Kurt@microsoft.com, chris.hipson@bt.com, "'von Riegen,
>> Claus'" <claus.von.riegen@sap.com>, coevans@microsoft.com,
>> cunningham_david@bah.com, dan@actional.com, "'Burdett, David'"
>> <david.burdett@sap.com>, dconnelly@openapplications.org, Diane
>> Jordan/Raleigh/IBM@IBMUS, dkmin@konkuk.ac.kr, dleshc@tibco.com,
>> dmoberg@us.axway.com, dnickull@adobe.com, "'David Orchard'"
>> <dorchard@bea.com>, doug.bunting@sun.com,
>> eisaku.nishiyama.dd@hitachi.com, email@cbvenkat.net,
>> eoghan.glynn@iona.com, Eric.Newcomer@iona.com,
>> eric.rajkovic@oracle.com, eric.wells@hitachisoftware.com,
>> ganga.sah@oracle.com, gatfora@uk.ibm.com, gboschi@sonicsoftware.com,
>> gdaniels@sonicsoftware.com, "'Gilbert Pilz'" <Gilbert.Pilz@bea.com>,
>> girish.juneja@intel.com, gregcarp@microsoft.com,
>> greg.pavlik@oracle.com, hbenmalek@us.fujitsu.com,
>> heiko.braun@jboss.com, ian.c.jones@bt.com, ian_robinson@uk.ibm.com,
>> james.speer@capgemini.com, jamie.clark@oasis-open.org,
>> jdurand@us.fujitsu.com, jeff.mischkinsky@oracle.com,
>> jekanaya@cs.indiana.edu, Jiri.Tejkl@systinet.com, jjchoe@tmax.co.kr,
>> jkchoi@methodi.com, jmarsh@microsoft.com,
>> joeri.van_cleynenbreugel@alcatel.be, john.gotze@oasis-open.org,
>> john.kemp@nokia.com, joseph.2.waller@bt.com, junghc@nca.or.kr,
>> jypyon@nca.or.kr, k-seki@da.jp.nec.com, kcyee@cecid.hku.hk,
>> kiwasa@jp.fujitsu.com, lburch@novell.com, lily.liu@webmethods.com,
>> "'Lei Jin'" <ljin@bea.com>, machi@nca.or.kr, "'Mark Little'"
>> <mark.little@jboss.com>, "'Schenecker, Mark'"
>> <mark.schenecker@sap.com>, "'de Boer, Martijn'"
>> <martijn.de.boer@sap.com>, "'Raepple, Martin'"
>> <martin.raepple@sap.com>, mary.mcrae@oasis-open.org,
>> matsuki.yoshino.pw@hitachi.com, mckierna@uk.ibm.com,
>> mgoodner@microsoft.com, mhb@itst.dk, "'Bechauf, Michael'"
>> <michael.bechauf@sap.com>, mike.grogan@sun.com, millwood@uk.ibm.com,
>> mlovett@uk.ibm.com, mlyons@layer7tech.com, mschenecker@e2open.com,
>> mwang@tibco.com, nickr@enosis.com, nilo.mitra@ericsson.com,
>> nobuyuki.yamamoto.vw@hitachi.com, Ondrej.Hrebicek@microsoft.com,
>> paul@wso2.com, pauld@mitre.org, paul.cotton@microsoft.com,
>> paul.knight@nortel.com, peter.furniss@erebor.co.uk,
>> peter_niblett@uk.ibm.com, pete.wenzel@sun.com,
>> prateek.mishra@oracle.com, pyendluri@webmethods.com, Richard
>> Salz/Cambridge/IBM@IBMUS, robin@oasis-open.org, sada@jp.fujitsu.com,
>> "'Patil, Sanjay'" <sanjay.patil@sap.com>, sanka@wso2.com,
>> scayron@acord.org, Scott Hinkelman/Austin/IBM@IBMUS,
>> shengsong.ni@oracle.com, shivajee@tibco.com, srcarter@novell.com,
>> stefanba@microsoft.com, "'Rossmanith, Stefan'"
>> <stefan.rossmanith@sap.com>, "'Winkler, Steve'"
>> <steve.winkler@sap.com>, sumit.gupta@oracle.com,
>> tboubez@layer7tech.com, tejeswar.das@iona.com,
>> thomas.erl@soasystems.com, thomas.t.bui@boeing.com,
>> timothy@drummondgroup.com, toby.considine@unc.edu, tom@coastin.com,
>> "'Yalcinalp, Umit'" <umit.yalcinalp@sap.com>, vfurman@webmethods.com,
>> "'Shipkowitz, Vicki'" <vicki.shipkowitz@sap.com>,
>> vikas@sonoasystems.com, "'Videlov, Vladimir'"
>> <vladimir.videlov@sap.com>, Martin Chapman <martin.chapman@oracle.com>
>> Subject
>> 	Re: Comment on WSDL spec: use of Anonymous Element
>>
>>
>>
>> 	
>>
>>
>>
>>
>>
>> Hi Doug,
>>
>> Comments interspersed:
>>
>> Doug Davis wrote:
>>
>> Alastair,
>>  There are a couple of different things at play here. First, sorry
>> about the long cc-list but the wsrx mailing list still doesn't appear
>> to work so I need to include the entire wsrx team manually :-(
>> I thought my mail client was going to expire when I just did "reply
>> all".
>>
>> In a non-anonymous world the wsa:Address field represents both the
>> fact that the destination can access connections and it identifies
>> the party.  And I think that makes sense.  There is no reason to not
>> have a single URI do that (let's not get into the 'identity' issue
>> w.r.t. ref-p's  :-).   So, if we then switch over to the anonymous
>> case, IMO, I don't believe the implementation should need to change
>> w.r.t. the purpose of this URI.
>> Here's what I don't understand. In the non-anon case an EPR (address
>> + stuff) is used to target. In the anon case, so far as I can tell,
>> there is nothing in WS-A to stop the same "full EPR" (address +
>> stuff) being used to target the reply.
>>
>> If one pursues this, what you intuitively want is: callback EPR =
>> {address = anon URI, ref-param[0] = identity}.
>>
>> But ref-params are opaque. Not what you want. (Although I can't see
>> how to stop an app contract, e.g. RM, specifying that we'll use a
>> mutually-known type for a ref-param, and make its presence mandatory
>> for certain messages).
>>
>> Assume that ref-param is not good. Why not add an RM extension
>> element to the EPR? This retains the identity lexeme within the EPR.
>> A WS-A impl should be happy to insert and extract such extension
>> elements, even if it hasn't a clue what they mean.
>>
>> In the simple WS-Addr anon use-case the URI still indicates both
>> things - whether or not (and 'not' in this case) the destination will
>> accept a connection, and it also indicates the identity - sort of.
>>  The identity is implicitly defined by the fact that it is tied to
>> the connection on which the request came in on.  If we did what
>> you're suggesting and add a second header then, IMO, RM would require
>> quite a big change to people's soap processor.  I think WS-Addr did a
>> really good thing by keeping everything people need to know with a
>> single structure - the EPR.  Even with the introduction of the
>> anonymous URI (which could very easily have been introduced in a much
>> less cleaner fashion), most of the SOAP processor doesn't really need
>> to know what the specific value of the wsa:Address element is until
>> it tries to actually send the message over the wire.
>>  So, if we then switch over the MakeConnection use-case, I think RM
>> did the right thing by using the same mechanism WS-Addr did - keep
>> everything within a single EPR.  
>> OK, but I think you may be conflating "a single EPR" with "the
>> address element of a single EPR".
>>
>> This allows for most of the SOAP processor to be totally unaware of
>> the actually transport mechanism until (or close to) the time the
>> message is serialized on the wire.  If there were additional headers
>> to carry this information then existing WS-Addr logic of mapping a
>> wsa:ReplyTo over to a wsa:To + ref-p headers when constructing a
>> response might need to also change.  There's also lots of other
>> use-cases where the logic to handle the RM code isn't on the same
>> machine doing this WS-Addr mapping so if its not aware of RM at all
>> it wouldn't even know to include some special bit on the outgoing
>> message (either in the message or in the soap processor's metadata
>> about the message) to indicate that MakeConnection will be used.
>>  Things are just a whole lot easier if everything is encapsulated in
>> a single EPR, and more specifically in the wsa:Address field.  Which
>> is exactly how WS-Addr anon works today.
>> Hmm, back to the conflation. I can't see anything in the WS-Addr spec
>> that prevents use of ref params, metadata or extensibility elements
>> within an anon EPR.  Here, you want to use the special value of
>> [address], and put an application-defined type/value in the rest of
>> the EPR. That would fit your requirement to "keep it in the EPR".
>>   I don't think loosening the wording makes thing indeterminate - it
>> still requires a URI with the proper semantics, but it allows for the
>> composition of other specifications that may defined their own.  And,
>> IMO, as long as they are consistent with WS-Addr's definition of
>> anon, from a WS-Addr perspective, then how they choose to add
>> additional semantics is up to them.
>> I'm not convinced. I think you are layer-violating -- introducing
>> precisely the problem that you are trying to avoid.  
>>
>> At the SOAP processing level this message is full of arcane headers
>> of unknown meaning. At the WS-A processor level, these are
>> commonplace headers with well-defined meanings, which may contain
>> some arcane app ref params and extension elements of unknown meaning.
>>
>> [reply endpoint][address] = anon URI means: "send a response on the
>> back-channel". At the last minute the WS-A processor whacks the
>> arcana (ref-params, metadata and extensibility elements) into the
>> header and whisks them off on the response. Receiving WS-A processor
>> gives the arcana to the app, for which they are meaningful (for
>> routing or correlation or whatever).
>>
>> This works because the WS-A receiver can look at well-known, expected
>> endpoint [reply endpoint] and can find the well-known, expected anon
>> URI -- and need think no further. Anon URI = use back channel.
>>
>> If the URI is different (anon-URI?tum-ti-tum-ti-tum) then the WS-A
>> processor has to assume that it's something special. In fact, it's
>> going to try to address it as a "real address", surely? Only the RM
>> layer knows that "?<string>" is irrelevant to back-channel choice.
>>
>> I can think of three ways of getting around this:
>>
>> 1) Amend WS-Addressing Core to say: the distinguished URI is "any URI
>> which begins with the following distinguished string".
>>
>> 2) Amend WS-Addressing Core to say: the following distinguished
>> metadata element or additional property means: whatever the content
>> of [address], use the back-channel.
>>
>> 3) Put an extension element in the EPR that is routing data at the
>> app level.
>>
>> 1) & 2) involve amending WS-Addressing, which doesn't seem like a
>> great idea.
>>
>> 3) Involves no change to WS-Addressing.
>>
>> If the WSDL says: anon is required, then what is the value inserted
>> on the wire for [reply endpoint][address]? If more definition is
>> required to establish that, then we seem to be losing the low-level,
>> generic capability WS-Addressing has defined. That's what I meant by
>> indeterminacy.
>>
>>
>>  In talking about this with Chris Ferris, he mentioned another
>> alternative... instead of saying "MUST", perhaps the text related to
>> the wsaw:Anon flag could simply say "SHOULD".  This clearly indicates
>> that WS-Addr's anon URI is the URI of choice, but if there are good
>> reasons for using some other one then the processor will allow those
>> as well.
>> Let me raise another point about the WSAW wording. It  talks about
>> "response endpoints" in the plural. Will the required, etc apply to
>> all endpoints which can be responded to, i.e. [from e], [reply e],
>> [fault e], or is it specific to each? It seems to imply the former.
>>
>> If ths is so, then it precludes routing tricks like the following
>> (which is practically useful):
>>
>> [from endpoint] is my address if you need to send me a second (e.g.
>> repeated) response.
>> [reply endpoint] = anon-URI, which is where to send your first
>> response, which we hope gets through.
>>
>> This feature allows retrying protocols to maximize use of HTTP
>> responses, but not be limited by them. I would like to be able to
>> express this as a contractual statement: this endpoint may be anon,
>> this one must not be: from/prohibited, reply/optional. I have a use
>> case in a customer business protocol for exactly this behaviour. I
>> think it's a useful optimization in other contexts.
>>
>> Yrs,
>>
>> Alastair
>>
>> thanks,
>> -Doug
>>
>>
>> *Alastair Green **_<alastair.green@choreology.com>_*
>> <mailto:alastair.green@choreology.com>
>> Sent by: _public-ws-addressing-request@w3.org_
>> <mailto:public-ws-addressing-request@w3.org>
>>
>> 08/04/2006 06:59 AM
>>
>> 	
>> To
>> 	Doug Davis/Raleigh/IBM@IBMUS
>> cc
>> 	_public-ws-addressing@w3.org_ <mailto:public-ws-addressing@w3.org>,
>> _ws-rx@lists.oasis-open.org_ <mailto:ws-rx@lists.oasis-open.org>
>> Subject
>> 	Re: Comment on WSDL spec: use of Anonymous Element
>>
>>
>>
>>
>> 	
>>
>>
>>
>>
>>
>>
>>
>> Doug,
>>
>> This is probably a dumb question, but aren't you trying to change the
>> wrong spec?
>>
>> In RM you are using a single header property to indicate two things:
>> "we're doing back-channel here, and it's part of a logical connection,
>> identified thus".
>>
>> Why can't you separate the communication of these two semantics, by
>> using two properties:
>>
>> 1) wsa:ReplyTo = anonymous URI
>> 2) wsrm:MakeConnection = connection identity?
>>
>> 2) without 1) would be illegal.
>>
>> In your example posted on the WS-RX list, you state that [reply
>> endpoint] is not set because MakeConnection is a "one-way message". But
>> it's a message that usually/frequently expects a reply (at a WS-A
>> level). Unlike many other applications, a WS-RM MC sender will tolerate
>> an empty response (no SOAP in the HTTP body), but I don't think that
>> stops one viewing this as a utilization of the request-reply pattern
>> implied by use of reply-to.
>>
>> If you loosen the WSAW wording, then surely it becomes indeterminate.
>> What does "required" imply on the wire, thereafter?
>>
>> Alastair
>>
>> Doug Davis wrote:
>> >
>> > To elaborate a little on Bob's note [1], in the WSA WSDL spec, when
>> > talking about the various values for the Anonymous Element it lists:
>> >
>> > "optional": This value indicates that a response endpoint EPR in a
>> > request message MAY contain an anonymous URI as an address.
>> > "required":This value indicates that all response endpoint EPRs in a
>> > request message MUST always use anonymous URI as an address.
>> > If a response endpoint EPR does not contain the anonymous URI as an
>> > address value, then a predefined InvalidAddressingHeader fault defined
>> > in Web Services Addressing 1.0 - SOAP Binding [WS-Addressing SOAP
>> > Binding] MUST be generated.
>> > "prohibited":This value indicates that any response EPRs in a request
>> > message MUST NOT use anonymous URI as an address.
>> > If a response endpoint EPR contains the anonymous URI as an address
>> > value, then a predefined InvalidAddressingHeader fault defined in Web
>> > Services Addressing 1.0 - SOAP Binding [WS-Addressing SOAP Binding]
>> > MUST be generated.
>> >
>> >
>> > The problem comes up when another spec defines their own version of
>> > anonymous - like WS-RM does.  It defines an anon URI which acts almost
>> > exactly like the WSA one in that it means "send it on the transport
>> > specific back-channel".  However, if the wsaw:Anonymous element is set
>> > to "required" then the above text would seem to imply that regardless
>> > of whether or not the RM spec is supported by the endpoint, the client
>> > can never send a wsa:ReplyTo with anything other than WSA's anonymous.
>> >  So the above text precludes another spec from ever extending WSA to
>> > define their own anon URI where from a WSA perspective its equivalent.
>> >  If the text were loosened up a bit to not mention the WSA anon URI
>> > specifically, but rather something more generic like: "... MUST always
>> > use a URI implying the transport specific back-channel" then the use
>> > of the wsaw:Anonymous element would not preclude other specs defining
>> > their own anon URI and not violate the meaning of the wsaw:Anonymous.
>> >
>> > thanks
>> > -Doug
>> >
>> >
>> >
>> > [1]
>> >
>> _http://lists.w3.org/Archives/Public/public-ws-addressing/2006Aug/0009.html_
>>
>>
>>
>>

-- 

Paul Fremantle
VP/Technology, WSO2 and OASIS WS-RX TC Co-chair

http://feeds.feedburner.com/bloglines/pzf
paul@wso2.com

"Oxygenating the Web Service Platform", www.wso2.com



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]