Return-Path: Delivered-To: apmail-xml-axis-dev-archive@xml.apache.org Received: (qmail 484 invoked by uid 500); 4 Oct 2002 18:56:46 -0000 Mailing-List: contact axis-dev-help@xml.apache.org; run by ezmlm Precedence: bulk Reply-To: axis-dev@xml.apache.org list-help: list-unsubscribe: list-post: Delivered-To: mailing list axis-dev@xml.apache.org Received: (qmail 475 invoked from network); 4 Oct 2002 18:56:45 -0000 Importance: Normal Sensitivity: Subject: RE: soap:header support To: axis-dev@xml.apache.org X-Mailer: Lotus Notes Release 5.0.7 March 21, 2001 Message-ID: From: Russell Butek Date: Fri, 4 Oct 2002 13:47:26 -0500 X-MIMETrack: Serialize by Router on D03NM119/03/M/IBM(Release 6.0|September 26, 2002) at 10/04/2002 12:56:49 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N (oops! accidentally hit 'send' before I was anywhere near ready!) There are two types of headers in WSDL: - explicit - the soap:header message in a binding operation also appears in the corresponding portType's operation. In other words, a parameter in a method is sent in the soap message's header instead of the body. - implicit - the soap:header message in a binding operation does not appear in the corresponding portType's operation. I don't really like explicit headers. It goes against modern programming philosophy. Stuff that appears in the SEI is business logic. Stuff that appears in headers is middleware logic. Never the twain should meet. But it's possible to do, JAX-RPC, section 11 talks about them (luckily the TCK didn't test for them!), and WS-I WSDL's will probably contain them (though we're fighting that), so we will have to implement them. Implicit headers I really don't understand. Since they're not declared in the SEI, they must come from someplace else. Obviously they come from a handler, but how do we correlate what's in WSDL to a handler that can supply the info? So I don't know how we implement implicit headers in our generated code. I've got some comments to your questions inline in the message below... Russell Butek butek@us.ibm.com Sylvain wrote: > <...snip...> > > - I did not use handlers to handle headers, can you achieve persistence of > headers between calls when using handlers? ( my implementation caches the > header objects in the portType) Sure. You can do just about anything you want with handlers. > - What do you mean about implicit/explicit "...headers required to be on the > message" ? I'm used to CORBA-like headers where all header stuff is optional. I'm not quite sure if, because the header is on the WSDL, it MUST appear in the soap message. > - A soap:headerfault is returned when a fault is generated because of a > bogus header. soap:headerfault is a bit problemmatic as far as I'm concerned. These, like headers themselves, can be implicit or explicit. Implicit ones really bother me because it implies exceptions that aren't defined in the SEI can bubble up to the client. (Actually this works for us because all generated exception extend RemoteException and all methods throw RemoteException, but it still seems dubious to me.) But other than that, these should be as easy (ha) to implement as soap:fault. > - About 'If the headerfault is an implicit header...' : The soap:headerfault > is simply the mechanism to notify to the WS consumer that an exception > occurred when processing the header. It does not belong to the api per > say. That's the problem. Languages like Java demand explicit declaration of all possible exceptions. They typically have an out, like Java's RuntimeException. Does that mean headerfaults must extend RuntimeException? That isn't spec'ed anywhere. > - dotNet does keep Header refs in the header and Body's ones in the body. But with explicit headers multirefs could cross this boundary. How we choose to implement this will be an interop issue. > - Does document style applies to headers? Probably. > - IMHO explicit headers are evil, they pollute the interface - what is the > difference between a explicit header and a simple INOUT param? Aren't they > the same? (beside the fact that they are carried in different places in the > SOAP message...) HEAR HEAR!!! I wish WSDL 1.1 never allowed them! > <...snip...>