RE: [ws-rx] issue i021 requirements

From
Ashok Malhotra <>
Date
2006-03-09T16:49:16+00:00
ID
20060309085120780.00000000424@amalhotr-pc
Thread
RE: [ws-rx] issue i021 requirements
Chris, you said ...

 

> There are certain situations, such as a gateway, that may not have 
access to the 
> WSDL/policy to 
determine which messages should be included in an RM Sequence.

 

This is the contentious requirement.  You want the 
spec to cover situations where

one of the participants does not adhere to the spec or does 
not have enough information

to follow the spec.  I don't think this is 
reasonable.

All the best, Ashok 

 

  

  
  From: Christopher B Ferris 
  [mailto:] 
Sent: Thursday, March 09, 2006 8:24 
  AM
To: Anish Karmarkar
Cc: wsrx
Subject: Re: 
  [ws-rx] issue i021 requirements

  

Anish, 

I don't necessarily disagree with these 
  requirements. 

However, as I 
  indicated in my previous notes, and during the discussion on 
last week's call, It isn't clear to me that every RM 
  enabled endpoint will have 
the 
  capacity to apply the RM semantics on a message-by-message basis. 
  

There are certain situations, such as a 
  gateway, that may not have access to the 
WSDL/policy to determine which messages should be included in an 
  RM 
Sequence. Further more, even if the 
  WSDL/policy WERE available, there may be 
considerable overhead involved in having to parse the messages (in the 
  
gateway scenario) to determine if they 
  match those messages which have 
been 
  annotated as needing to be sent reliably. 

In such cases where a source endpoint is just on/off for all messages 
  that 
pass though, I think that the 
  corresponding destination endpoint should NOT 
reject messages that are sent reliably yet are not indicated as being 
  required 
to be sent reliably in the 
  WSDL/policy. 

Thus, adding to my 
  proposed addendum to Sanjay's proposal: 
  
If an RM policy assertion is 
  attached to any of: 
  
    
wsdl:binding/wsdl:operation/wsdl:input 
    
wsdl:binding/wsdl:operation/wsdl:output 
    
wsdl:binding/wsdl:operation/wsdl:fault
then an RM policy assertion, specifying 
  wsp:Optional=true MUST be attached to the corresponding wsdl:binding or 
  wsdl:port, indicating that the endpoint supports WS-RM. Any messages, 
  regardless of whether they have an attached Message Policy Subject RM policy 
  assertion, MAY be sent to that endpoint using WS-RM. Additionally, the 
  receiving endpoint MUST NOT reject any message belonging to a Sequence, simply 
  because there was no Message Policy Subject RM policy assertion attached to 
  that message. 

I would offer the following explanation/rationale: 

There might be certain RM implementations that are 
  incapable of applying RM QoS semantics on a per-message basis. In order 
  
to ensure the broadest interoperability, when 
  an endpoint decorates its WSDL with RM policy assertions using Message Policy 
  Subject, 
it must also be prepared to 
  accept that all messages sent to that endpoint might be sent within the 
  context of an RM Sequence, regardless 
of whether the corresponding wsdl:input, wsdl:output or wsdl:fault had 
  an attached RM policy assertion. 

Rather than turn away messages that were unnecessarily sent with RM 
  semantics, the receiving endpoint described by the WSDL 
must accept these messages. 

By attaching an RM policy assertion that specifies 
  wsp:Optional="true" to the corresponding endpoint that has attached RM 
  policy 
assertions at the Message 
  Policy Subject level, the endpoint is describing the above constraint in 
  policy. 

Cheers, 
  

Christopher Ferris
STSM, Software 
  Group Standards Strategy
email: 
blog: 
  http://www.ibm.com/developerworks/blogs/dw_blog.jspa?blog=440
phone: +1 508 
  377 9295 

Anish Karmarkar 
  <> wrote on 03/09/2006 08:01:12 
  AM:

> I took an action during last week's concall to send 
  requirements for 
> what I see as the desired semantics for issue i021. 
  Sorry for being late 
> but I'm on vacation till 17th march (my regrets 
  for the next 2 concalls).
> 
> Requirements:
> 
> 1) 
  Provide the capability to specify in WSDL that a particular message 
> 
  (input, output, or fault) MUST be sent reliably within a WSRM 
  Sequence.
> 
> 2) Provide the capability to specify in WSDL that a 
  particular message 
> (input, output, or fault) MAY be sent using WSRM. 
  The means that it is 
> the sender's choice (and not the receiver's) 
  whether the message is sent 
> reliably or not.
> 
> 3) 
  Provide the capability to specify in a WSDL binding/port that all 
> 
  messages  sent using that binding/port MUST be sent reliably within a 
  
> WSRM Sequence (but not in the same Sequence). This potentially could 
  be 
> syntactic sugar based on how the capability in (1) is 
  provided.
> 
> 4) Provide the capability to specify in a WSDL 
  binding/port that all 
> messages  sent using that binding/port MAY 
  be sent reliably within a 
> WSRM Sequence (but not in the same 
  Sequence). The means that it is the 
> sender's choice (and not the 
  receiver's) whether the message is sent 
> reliably or not. This 
  potentially could be syntactic sugar based on how 
> the capability in 
  (2) is provided.
> 
> 5) The capability in (1) and (2) should not 
  impose onerous constrains on 
> other messages within the same 
  portType/Binding/Port wrt reliability. 
> For example, one should have 
  the ability to specify that a particular 
> in-message MUST be sent 
  reliably without requiring any reliability 
> constrains on the 
  out-message (supported or required).
> 
> Consider a port which is 
  a purchase order service providing 'submitPO' 
> and 'getStatus' 
  operations. The submitPO operation is reliable, secure 
> and transacted 
  operation which returns a PO number. Both the in and out 
> messages for 
  submitPO are sent reliably. The getStatus operations 
> requires the PO 
  number and returns a status (pending, approved) -- this 
> is not a 
  secure, reliable or a transacted operation. The capabilities 
> provided 
  in (1) - (4) above should not force the port to support 
> reliability 
  for the getStatus operation.
> 
> -Anish
> --
> 
  
> 
>