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

 


Help: OASIS Mailing Lists Help | MarkMail Help

ws-caf message

[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


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]