[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: RE: [ws-caf] [Bug 135] New: participating-services list needs to have defined semantics and modification mechanisms or be removed
<humour-impaired> I figured it was a joke. </humour-impaired> ;-) Mark. >===== Original Message From "Furniss, Peter" <Peter.Furniss@choreology.com> ===== >Yes, of course. I was teasing Eric. There is a smiley in my message. > >In fact, I wasn't quite sure whether Eric's suggestions about not >copying the context >referred only to the participating-services-list or covered the use of >contexts in >general. Some of the peculiarities of behaviour I described in my first >message, for the >by-value case, are the inevitable consequences of by-value propagation, >and apply to >other fields as well. To object to these is to object to by-value. > >However, since these peculiarities are pretty much what >transaction-contexts want >(unsurprising, since tx contexts >have been propagated by value for at least 20 years), by-value is >appropriate there. > >I wasn't going to propose dropping by-value again, but if Eric wanted to >.. :-) [JOKE !!!] > >However, I would still very much like to see a worked-out example of an >application that would >interoperably switch between by-value and by-reference, with precise >statements of >the behaviour required of the parties in various circumstances. I >continue to doubt >the viability of such a beast. Perhaps other members of the TC are just >bursting >with such examples that are fully worked-out but they can't divulge for >confidentiality >reasons. But until someone shows me one, I will suspect it is a mythical >animal. (In fact, >there is a name for it - a chimaera, a lion-goat-snake mixture.) > >Peter > >> -----Original Message----- >> From: Mark Little [mailto:Mark.Little@arjuna.com] >> Sent: 27 June 2004 19:25 >> To: Furniss, Peter; Newcomer, Eric; ws-caf@lists.oasis-open.org >> Subject: RE: [ws-caf] [Bug 135] New: participating-services >> list needs to have defined semantics and modification >> mechanisms or be removed >> >> >> Peter, I think you were joking, but: there is no such >> proposal on the table >> for abolishing context-by-value. This has been discussed >> several times over >> the lifetime of this TC (at face-to-face meetings and in >> teleconferences) and >> each time it has been agreed to support both the reference >> and value form. >> That decision has been made. We now need to move on to other issues. >> >> Mark. >> >> >===== Original Message From "Furniss, Peter" >> ><Peter.Furniss@choreology.com> >> ===== >> >That seems to be a proposal to abolish context-by-value and use >> >context-by-reference only. >> > >> >I might support that :-) >> > >> >Peter >> > >> >> -----Original Message----- >> >> From: Newcomer, Eric [mailto:Eric.Newcomer@iona.com] >> >> Sent: 26 June 2004 13:46 >> >> To: Furniss, Peter; ws-caf@lists.oasis-open.org >> >> Subject: RE: [ws-caf] [Bug 135] New: participating-services list >> >> needs to have defined semantics and modification mechanisms or be >> >> removed >> >> >> >> >> >> I guess we are going to need some discussion on this, or >> at least a >> >> proposal to review. What I was talking about eliminates >> the need for >> >> copying the context, it would become a Web resource instead. >> >> >> >> -----Original Message----- >> >> From: Furniss, Peter [mailto:Peter.Furniss@choreology.com] >> >> Sent: Friday, June 25, 2004 7:06 PM >> >> To: Newcomer, Eric; ws-caf@lists.oasis-open.org >> >> Subject: RE: [ws-caf] [Bug 135] New: participating-services list >> >> needs to have defined semantics and modification mechanisms or be >> >> removed >> >> >> >> >> >> Eric, >> >> >> >> I don't entirely understand what you are suggesting. Some of this >> >> seems to be suggesting an alternative to the Context Service and >> >> Context Manager interfaces that are currently in the spec, which I >> >> doubt is your meaning. What is a context-by-reference >> other than "a >> >> Web resource accessible by all participants". >> >> >> >> But concerning the participating-services list specifically, the >> >> protocol used in the by-reference case is a secondary matter - I >> >> suggested an extension to Context Manager because we were >> using wsdl >> >> & soap mechanisms for other interactions, although one >> could use get >> >> and put there as well (though then has to be some specification of >> >> exactly what url to use for what). But, as I >> >> say, that is secondary. >> >> >> >> The primary question is how the "epistomology" of the >> >> participating-services list works - how is information >> accumulated in >> >> various copies of the context, and who has responsibility >> for causing >> >> an update to the list (regardless of the particular distribution >> >> mechanisms used to achieve that update). On this, you >> raise the point >> >> of persistence/non-persistence which I hadn't considered >> >> - >> >> possibly that's orthogonal to the participation list - if a >> >> holder of a copy of the context loses it, then that copy >> >> goes, along with any information that was held in that copy >> >> and nowhere else. >> >> >> >> If a participating services list in *any* copy of a context is to >> >> have any clear meaning, there needs to be explicit >> statement of the >> >> mechanisms that get the information into the copy. >> >> >> >> So, could you propose text defining what the mechanisms are - who >> >> MUST or MAY send GET, PUT or POST to which uri (i.e. where >> it got the >> >> uri from) and in response to which events ? >> >> >> >> That would still leave the choices A-E that I had - where is that >> >> specified put and when is it required. And if the answer >> is D - it >> >> is specified in a referencing specification, we can wait >> till we have >> >> a use case that needs it (thus helping work out what is actually >> >> needed - and you don't need to work it out now), and omit the >> >> field from the base context. >> >> >> >> >> >> Peter >> >> >> >> > -----Original Message----- >> >> > From: Newcomer, Eric [mailto:Eric.Newcomer@iona.com] >> >> > Sent: 25 June 2004 17:29 >> >> > To: Furniss, Peter; ws-caf@lists.oasis-open.org >> >> > Subject: RE: [ws-caf] [Bug 135] New: participating-services list >> >> > needs to have defined semantics and modification >> mechanisms or be >> >> > removed >> >> > >> >> > >> >> > Peter, >> >> > >> >> > Actually I'd prefer a description of this a bit the other way >> >> > around, i.e. define the sharing as a Web resource >> accessible by all >> >> > participants rather than try to define rules for copying and >> >> > sharing by value. >> >> > >> >> > A minimal protocol for me would be along the lines of >> REST instead >> >> > of the old RPC oriented style of copy-in, copy-out since we >> >> > probably can't assume the use of persistent sessions at >> the minimal >> >> > Web services implementation level. Once we get to >> coordinators and >> >> > other "referencing specifications" I think it's more >> reasonable to >> >> > assume the possibility of the manipulation of data by the >> >> > implementation. >> >> > >> >> > At the simplest level I think I'd want to propose a >> protocol based >> >> > on URI passing and the concept of a shared Web resource context >> >> > that eveyone can access (i.e. via standard GET and PUT >> operations) >> >> > rather than try to work out semantics of passing the context >> >> > structure around among the various implementation agents >> involved. >> >> > >> >> > Once you have the agents anyway (i.e. coordinators) I think the >> >> > data passing protocol would make more sense. But for the bare >> >> > context spec, and a minimal usage of the mechanism, I think the >> >> > REST oriented shareable Web resource approach makes more sense. >> >> > >> >> > Eric >> >> > >> >> > -----Original Message----- >> >> > From: Furniss, Peter [mailto:Peter.Furniss@choreology.com] >> >> > Sent: Friday, June 25, 2004 12:05 PM >> >> > To: ws-caf@lists.oasis-open.org >> >> > Subject: RE: [ws-caf] [Bug 135] New: participating-services list >> >> > needs to have defined semantics and modification >> mechanisms or be >> >> > removed >> >> > >> >> > >> >> > There is a need for clarification on the meaning of the >> >> > participating-services list in the context. This message >> attempts >> >> > to provide text towards that, but ends up concluding it >> shouldn't >> >> > be in the base context spec. >> >> > >> >> > I believe the only explanation at present is: >> >> > >> >> > "An optional list of the Web services currently participating in >> >> > the activity, called participating-services." >> >> > >> >> > For this to be useful in any particular use of ws-context a >> >> > considerable amount of additional specification would be needed. >> >> > Since it is a field in an interoperable protocol, the >> definition of >> >> > what it means has to be defined in the protocol, and since it >> >> > concerns distributed information, the semantic definition will >> >> > impose behavioural requirements on the implementations >> taking part. >> >> > In the absence of clearly defined responsibilities on >> the context >> >> > manager, on the systems invoking Web services to which they pass >> >> > the context, and on Web services receiving the context >> the contents >> >> > of the list will have no meaning, and no reliance can be >> put on the >> >> > presence or absence of an entry in the list. The following is >> >> > an attempt to provide, or outline, this additional >> >> > specification. There are then questions of placement - where >> >> > such text goes and under what circumstances implementations >> >> > are required to follow the procedures defined. >> >> > >> >> > The specification text here is not complete, but should make it >> >> > clear what would be needed to complete it. In some cases >> there are >> >> > specification-time choices of action >> >> > - these are shown as [ one way | another way]. >> Explanations are put >> >> > in Notes - these might or might not end up in the specification >> >> > text. >> >> > >> >> > The behaviour required to enforce the semantics have to be >> >> > completely different depending on whether the context is >> propagated >> >> > by value (and evolves into divergent forms) or by >> reference (and is >> >> > owned by the context manager). In consequence, the >> meaning of the >> >> > list is different too. >> >> > >> >> > The elements of the list are assumed to be URI's, as in 0.3, but >> >> > they probably ought to be service-references. >> >> > >> >> > >> >> > When a context is created the participating-services list MAY be >> >> > omitted, but if present it MUST be empty. >> >> > >> >> > With propagation by value: >> >> > >> >> > Assumption: application entities (web service users and web >> >> > services) retain a copy of a context which is used when >> the context >> >> > is propagated on to other web services. (In practice an >> "entity" is >> >> > defined by the possession of a single copy of the context.) >> >> > >> >> > An entity that propagates a context to a Web service >> MUST add the >> >> > URI it is using to access that Web service to its own >> copy of the >> >> > context prior to sending the context to that Web service, unless >> >> > that URI is already in the list. A Web service that receives a >> >> > context MUST retain all members of the >> participating-services list >> >> > in its own copy of the context (this will include its own URI as >> >> > used by the entity propagating the context to it). An entity MAY >> >> > add URI's for Web services to the participating-services list of >> >> > its copy in advance of any attempt to propagate to that Web >> >> > service. >> >> > >> >> > Note -- the nature of propagation by value will mean the list of >> >> > participating-services present in any particular copy >> will always >> >> > include the immediate ancestors in the propagation path from the >> >> > first web service that received the context (but not the entity >> >> > that issued begin to the Context service). It may >> include "lateral >> >> > relations" - siblings of itself or of an immediate ancestor if >> >> > these were invoked before the direct line, or the URI >> was known and >> >> > added to the context before the invocation in the direct >> line. It >> >> > will not include services that were involved in the activity by >> >> > ancestors after the context was propagated on the direct line, or >> >> > any that were involved from non-ancestors -- endnote >> >> > >> >> > >> >> > [possible additional rule: If a context a received by a Web >> >> > service is >> >> > found to >> >> > have the same context identifier as an already known and >> retained >> >> > context, the participating-services lists MUST be merged >> and only >> >> > one copy of the context retained. ] >> >> > >> >> > >> >> > Note -- it is difficult to see how any useful interpretation of >> >> > "currently" in the definition quoted above can be achieved with >> >> > propagation by value. It appears to imply that a service >> ceases to >> >> > be "currently participating" at some point and is >> removed from the >> >> > list. The only generally definable point would be when the web >> >> > service returns or replies to the message that carried the >> >> > propagating context. But this won't necessarily be well >> defined in >> >> > the case of "asynchronous" replies. A clear definition could be >> >> > achieved by having an anti-context >> >> > (context-reply) element that could be put in the header of a >> >> > reply message, indicating that the replying web service had >> >> > completed its participation, - if this existed there would be >> >> > extra text explaining that a web service uri was removed from >> >> > the list when the context-reply was received. (actually it >> >> > needs to count out the propagations to that web service and >> >> > count back the replies, removing the uri only when the in use >> >> > count falls to zero. >> >> > >> >> > Even if this were done, what use the list would then have on a >> >> > propagated context ? It would tell the receiving web >> service which >> >> > other webservices were participating at the point of >> propagation, >> >> > but this list would be invalidated by the replies from other >> >> > sibling services. >> >> > -- endnote >> >> > >> >> > >> >> > With propagation by reference: >> >> > >> >> > In this case the context is maintained and held by the context >> >> > manager, rather than by the application entities. Since >> the context >> >> > manager is a "public" service, there need to be additional web >> >> > service operations on the context manager to manipulate the >> >> > participating services list. The could either be added to the >> >> > context manager port type, or an additional port type could be >> >> > specified. If the latter, then either it must be defined >> that the >> >> > context manager port whose url is in the context must implement >> >> > both port-types, or the context (when carried by reference) must >> >> > carry an address >> >> > (url) for the port implementing the >> participation-list-manager port >> >> > type. Since the context is kept "behind" the context >> manager port, >> >> > there seems little point in having a separate port for the >> >> > participation-list-manager operation(s) >> >> > >> >> > The required operation of the participation-list-manager >> >> interface is >> >> > addParticipantService, with parameters of the context >> >> > identification and >> >> > a url (service-reference ?). A (context/p-list) >> >> > manager implementation MUST >> >> > add the URI to the participant-list for the >> >> > identified context, unless >> >> > it is already there. Errors will be similar to >> >> > those for context manager's >> >> > contentsSet operation. >> >> > >> >> > >> >> > The behaviour of an implementation receiving a context >> MUST be in >> >> > accordance with the following: >> >> > >> >> > [EITHER: >> >> > Prior to invoking a webservice, an entity that propagates a >> >> > context to a Web service MUST invoke >> addParticipantService on the >> >> > context manager identified in context, passing the URI of the >> >> > service to be invoked. >> >> > |OR >> >> > On receipt of a WS-context in a header, a Web service >> must invoke >> >> > addParticipantService on the context manager identified in the >> >> > context, passing its own URI. ] >> >> > >> >> > Note -- again there is a need for removal of elements >> from the list >> >> > if "currently participating" is to be implemented. This would >> >> > require another operation on the >> participating-services-manager or >> >> > the base context manager. The question of how to >> determine that a >> >> > service has ceased to be participating applies as for by-value. >> >> > >> >> > Ignoring the "currently" participating/removal question, >> the list >> >> > does seem to have some clear meaning when the context is >> passed by >> >> > reference. Whether this has any use is another question. >> end rules >> >> > >> >> > --- >> >> > >> >> > the choices for where the specification of updating the >> >> > participating-services list is placed, and when the behaviour is >> >> > required of implementations would seem to be: >> >> > >> >> > A it is included in the ws-ctx spec, and mandatory for all >> >> > implementations of and for all uses of ws-context. The actions >> >> > required of a receiver of a context are thus the substance of >> >> > "mustUnderstand=true" - if you don't do them, you must >> fault. The >> >> > participating-services list MUST be present unless it would be >> >> > empty. >> >> > >> >> > B it is included in the ws-ctx spec, and a referencing >> >> > specification that defines context type states whether they are >> >> > required (similar rules about mustUnderstand (though this is the >> >> > sort of thing that might cause us to keep the ws-ctx >> mustUnderstand >> >> > as well as the soap one)). A context with a context type >> that does >> >> > not require these procedures MUST not include the >> >> > participating-services list. >> >> > >> >> > C it is included in the ws-ctx spec, but it is up to an >> >> > implementation whether it does it, unconstrained by any mutually >> >> > known specification >> >> > >> >> > D it is included in a referencing specification that defines a >> >> > context type, and required of implementations that >> implement/claim >> >> > to understand that type >> >> > >> >> > E it is just vaguely understood and implementations can >> do it if >> >> > they want >> >> > >> >> > >> >> > this categorization ignores the difference between >> procedures for >> >> > by-reference and by-value >> >> > >> >> > -- >> >> > E is clearly absurd, and included only because that >> appears to be >> >> > the current position :-) >> >> > >> >> > C is equally absurd, as it is effectively the same as E, >> and means >> >> > there is no well-defined semantics of what the >> >> > participating-service list is >> >> > >> >> > B means we really have a sort of "functional unit" in >> ws-context - >> >> > there are ws-context uses with and without >> participating-services. >> >> > Implementations might choose to implement these >> mechanisms or not, >> >> > and would need to state whether they did. >> Implementations that did >> >> > not could not support a referencing specification that >> required use >> >> > of it. >> >> > >> >> > A is coherent, but would seem a nuisance for uses that >> didn't take >> >> > advantage of the participating-services list. >> >> > >> >> > D - Leaving the definition of the mechanism and semantics to the >> >> > referencing specification has the advantage of avoiding the >> >> > ambiguities and confusions of the alternative mechanisms. >> >> > (especially if the ref. spec. mandates by-value or by-reference >> >> > exclusively) >> >> > >> >> > However, if the use and thus semantics of the list are >> defined in a >> >> > referencing specification, the participating-services >> list should >> >> > not be defined in the base context, but should be part of the >> >> > extension to context made by such a referencing specification. >> >> > >> >> > --- >> >> > >> >> > In the light of this, I propose that solution D is >> adopted, and the >> >> > participating-services list is removed from the context >> definition >> >> > in the base spec. >> >> > >> >> > Peter >> >> > >> >> >> >> >>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]