See inline.

-----Original Message-----
From: Dittmann Werner [mailto:[EMAIL PROTECTED]]
Sent: Thursday, April 18, 2002 3:00 AM
To: '[EMAIL PROTECTED]'
Subject: AW: soap:header


Sylvain,

sorry about the confusion. I was looking at the SOAP specs
only. Now having a look at the WSDL specs I tried to match
these two. Here what I found and think what it may be:

1st: the pure SOAP (1.2) does not provide a direct binding
     between header contents and body contents. Both parts
     of a SOAP message can be addressed to different entities,
     can processed independently, and there is no protocol
     element which relates them. If there shall be a relation
     between header and body elements that must be done by
     application specific elements and/or attributes.

[sylvain] Sounds fine.

2nd: WSDL defining headers inside the operation part may
     be interpreted like: if this operation is called then 
     the defined headers must be transmitted also. This is 
     just my interpretation because the SOAP spec does not
     mandate this. Using the header definition inside the
     operation may be used to generate implemetation code
     on the server side, and/or code on the client side that 
     checks if all "required" headers are set.

[sylvain] Also, soap:header has an attribute called required. 
          

However, there should also be a way to set additional headers
in the SOAP message that are not defined in WSDL but are necessary
for other purposes, e.g. SOAP routing, transfer of service licensing
data, etc. 

[sylvain]  In my mind your WSDL should define all the service's header
requirement because that is the only way that an external consumer of your
service will know that a header is mandatory or not.
This being said, if your service is internal, you can do: 

  call.addHeader(new SOAPHeaderElement(...))

About overwriting received SOAP headers: you are right. 
There are different level of abstraction in .NET and the SOAP toolkit.

I was looking from a pure SOAP point of view. Here the headers
contained in a request are not related to headers contained
in a response. Because of that I'm somewhat reluctant to
automatically overwrite headers.

[sylvain] Maybe those distinct headers should be different parts.  This way
the response one would not overwrite the request one.

I've seen an example where the request contained some security
info (name/password) in a header and the response contained also
a header with security info (name/password) but both where
different, i.e. first it was the requestors name/password
and then it was the name/password of the responder (support of
mutual authentication). They used the same header element name, 
encoding, etc. In this case overwriting complicates the whole matter.

[sylvain] Anything makes you think that the header implementation of this
service was well done?


This message may contain privileged and/or confidential information.  If you
have received this e-mail in error or are not the intended recipient, you
may not use, copy, disseminate or distribute it; do not open any
attachments, delete it immediately from your system and notify the sender
promptly by e-mail that you have done so.  Thank you.

Reply via email to