Re: Action without UsingAddressing

On Aug 10, 2005, at 4:07 PM, Anish Karmarkar wrote:

>
> Marc Hadley wrote:
>
>> I see, so we do have an option 4 which I would characterize as:
>> 4. Inclusion of wsa:Action without inclusion of  
>> wsa:UsingAddressing  is purely advisory, other information is  
>> needed to determine whether  WS-Addressing is supported. If  
>> messages include WS-A MAPs then the  wsa:Action MUST be honored.
>> I wonder if we should consider changing the target of wsa:Action  
>> to  be the binding rather than the abstract port type/interface  
>> to  simplify the logic here ? Seems like use of addressing is a  
>> binding  level thing so why allow addressing properties to be  
>> specified on the  abstract constructs.
>>
>
> This would work well for WSDL 1.1 where the binding is tightly  
> coupled with the portType and one has to specify things related to  
> input/output in the binding anyway.
>
> But for WSDL 2.0, this would tie the binding to the interface (and  
> therefore not reusable for other interfaces) and make bindings more  
> verbose.
>
True, but you'd only need to do that when you wanted to specify  
operation specific binding details like a wsa:Action - we still have  
defaults. I guess the choice is between adding binding specific stuff  
to the abstract interface or having to specify operation specific  
stuff in the binding. Seems like the former is closer to how the WSDL  
spec implies stuff should work.

Alternatively one could argue that action is part of the abstract  
contract but then you'd expect all bindings to be able to convey its  
value somehow.

Marc.

> <Changing-topics-slightly>
> BTW, I know we had an issue and agreed on making UsingAddressing a  
> binding/port/endpoint thing and don't want to reopen that issue,  
> but given the extensibility in MAPs, why is UsingAddressing a  
> binding/endpoint/port specific thing rather than binding/endpoint/ 
> port/portType/interface specific thing?
> </Changing-topics-slightly>
>
> -Anish
> --
>
>
>> Marc.
>> On Aug 10, 2005, at 2:47 PM, Anish Karmarkar wrote:
>>
>>>
>>> Marc Hadley wrote:
>>>
>>>
>>>> On Aug 9, 2005, at 5:41 PM, Anish Karmarkar wrote:
>>>>
>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>> Here are the options as I see them:
>>>>>>>> 1. Inclusion of wsa:Action is equivalent to inclusion of      
>>>>>>>> wsa:UsingAddressing with wsdl:required=true (messages  
>>>>>>>> MUST    include  wsa MAPs and wsa:Action MUST be honored)
>>>>>>>> 2. Inclusion of wsa:Action is equivalent to inclusion of      
>>>>>>>> wsa:UsingAddressing with wsdl:required=false (messages  
>>>>>>>> MAY    include  wsa MAPs but if so wsa:Action MUST be honored)
>>>>>>>> 3. Inclusion of wsa:Action without inclusion of     
>>>>>>>> wsa:UsingAddressing  is purely advisory (messages MAY  
>>>>>>>> include   wsa  MAPs and if so  wsa:Action MAY be honored)
>>>>>>>> 4. Something else.
>>>>>>>> I don't like 1 since it seems to circumvent wsdl:required   
>>>>>>>> and   will  require special wsa aware WSDL processors. 2 and  
>>>>>>>> 3  seem  OK,  I have a  preference for 2.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>> I tend to favor #3 (except for the last 'MAY'), but would  
>>>>>>> like   to  phrase it differently:
>>>>>>> When WS-Addressing is engaged for a particular service/  
>>>>>>> operation/  message (irrespective of the value of   
>>>>>>> wsaw:UsingAddressing) and   wsaw:Action is present, all the   
>>>>>>> rules around wsaw:Action MUST be   followed.
>>>>>>> Inclusion of wsaw:Action does not affect the interpretation   
>>>>>>> of   wsaw:UsingAddressing. This implies that if wsaw:Action  
>>>>>>> is   present  in WSDL and the corresponding message on the  
>>>>>>> wire has   wsa:Action  but this wsa:Action does not adhere to  
>>>>>>> the  semantics  of wsaw:Action  then this is a violation of  
>>>>>>> the spec.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> That sounds just like my #2 above - what am I missing ?
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> #2 says that the presence of wsaw:Action is equivalent to the    
>>>>> presence of <wsaw:UsingAddressing wsdl:required='false'/>  
>>>>> (when   such a marker is absent). This means that the service  
>>>>> does  support  WS-Addressing, but WS-Addressing is not required.
>>>>>
>>>>> Whereas what I'm stating above (as a reinterpretation of #3)  
>>>>> is   that the presence of wsaw:Action does not necessarily mean  
>>>>> that  the  service supports WS-Addressing.
>>>>>
>>>>>
>>>>>
>>>> I'm still a bit confused, why would the WSDL have a wsa:Action  
>>>> in  it  if the service doesn't support WS-Addr ?
>>>>
>>>>
>>>
>>> To override the default action rules when a service implementing   
>>> the interface/portType does support WS-Addressing.
>>>
>>> Consider the case where the 'abstract' part of the WSDL is  
>>> written  by someone else. A WSDL containing the service element  
>>> imports that  WSDL and implements the abstract part. Since  
>>> wsaw:Action is on the  input/output of an operation (the  
>>> 'abstract' WSDL), is the service  required to support WS-Addressing?
>>>
>>> There are two possible cases here:
>>> 1) The abstract WSDL was written to allow services that support  
>>> WS- Addr as well as services that do not support WS-Addr. For  
>>> services  that support WS-Addr, wsaw:Action is introduced to  
>>> override the  default action rules (because the default, for  
>>> whatever reason, is  not suitable). Therefore the presence of  
>>> wsaw:Action does not  require the service to necessarily support  
>>> WS-Addr.
>>> 2) wsaw:Action was included to do two things: (a) override the   
>>> default action rules, and (b) to say that ws-addressing must be   
>>> supported.
>>>
>>> Based on the current status of the WSDL binding, wsaw:Action is   
>>> meant to override the default action rules and not overridden to   
>>> mean <wsaw:UsingAddressing wsdl:required='false'/>. In fact, in   
>>> section '3.1 UsingAddressing Extension Element,' we specifically   
>>> allow this element to appear only on the binding element or the   
>>> port/endpoint element. We further go on to say in section '3.2  
>>> WSDL  SOAP Module':
>>> "Note that this module is not meaningful when used on WSDL   
>>> constructs where wsaw:UsingAddressing is not allowed."
>>>
>>> Given this, I prefer to not overload wsaw:Action to mean   
>>> <wsaw:UsingAddressing wsdl:required='false'/>. This also allow  
>>> the  flexibility to override the default action rules without  
>>> requiring  that WS-Addr be supported.
>>> But to be clear, I'm not opposed to overloading wsaw:Action as  
>>> long  as we make the overloading explicit in section 4 (as well  
>>> as modify  section 3.1 and 3.2).
>>>
>>> Hope that makes it clearer.
>>>
>>> -Anish
>>> -- 
>>>
>>>
>>>
>> ---
>> Marc Hadley <marc.hadley at sun.com>
>> Business Alliances, CTO Office, Sun Microsystems.
>>
>
>

---
Marc Hadley <marc.hadley at sun.com>
Business Alliances, CTO Office, Sun Microsystems.

Received on Wednesday, 10 August 2005 21:10:27 UTC