If you are sending simple types, then you don't have to define them in the
<types> section, but you'll have to use rpc/encoded in the soap:header
definition.

Anne

----- Original Message -----
From: "Steve Pannier" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Sent: Wednesday, July 30, 2003 4:22 PM
Subject: Re: Adding header info to WSDL


>
> Actually, that wasn't me.  It was the original poster (Sam) who
> said it. I was continuing the thread because it addressed the
> problem I'm encountering.  I probably should have started a
> new thread to avoid confusion, or indicated in my original post
> what my situation is.  My bad.
>
> At any rate, given that our soap headers are simple strings,
> would I still need to add info to the <types> section?
>
> (I will probably start another thread for my WSDL4J questions,
> so they don't get lost in this thread.)
>
> Steve Pannier
>
>
> > Steve,
> >
> > You said initially that you want your authentication header to look like
> > this:
> >
> > <authentication>
> >    <username></username>
> >    <password></password>
> > </authentication>
> >
> > This is a complex structure, therefore it must be defined in the <types>
> > section.
> >
> > Anne
> >
> > ----- Original Message -----
> > From: "Steve Pannier" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, July 30, 2003 3:52 PM
> > Subject: Re: Adding header info to WSDL
> >
> >
> > >
> > > Ann,
> > >
> > > Thanks for the response.  Here's my dilemma:
> > >
> > > We are using Axis 1.1, and we use the "Java2WSDL" tool to
> > > create WSDL describing our already-existing services. We
> > > now want to include in the generated WSDL a description of
> > > the Soap headers we support. I know of no way for Axis's
> > > "Java2WSDL" to do this, so that's why I am looking at the
> > > WSDL4J API to programmatically add the soap:header
> > > elements to  the WSDL (doing this manually is not an option).
> > >
> > > Our soap headers are not complex types, just simple strings.
> > > So, would I be correct in assuming that I would not need to
> > > define anything in the <types> section?
> > >
> > > Also (for any WSDL4J experts out there), I'm using the
> > > example code from the JSR110 (JWSDL) document to do
> > > the basic WSDL traversal stuff,  but I can't figure out how to
> > > create a SOAPHeader ExtensibilityElement that I can add
> > > to the BindingInput. It's the createExtension() method that
> > > I'm having problems with.
> > >
> > > A snippet of the code I have so far:
> > >
> > > ExtensionRegistry extReg = new ExtensionRegistry();
> > > Service service = def.getService(new QName(targetNamespace,
> "MyService"));
> > > Port port = service.getPort("MyServicePort");
> > > Binding binding = port.getBinding();
> > > List operations = binding.getBindingOperations();
> > > Iterator opIterator = operations.iterator();
> > > while (opIterator.hasNext()) {
> > >   BindingOperation bindingOperation =
> > >         (BindingOperation)opIterator.next();
> > >   BindingInput bindingInput =
> > >         bindingOperation.getBindingInput();
> > >   SOAPHeader soapHeader =
> > >         (SOAPHeader)extReg.createExtension(BindingInput.class,
> > >         new QName("soap", "header"));
> > >   }
> > > }
> > >
> > > Any other ideas as to how to attack my problem?  Or are
> > > there any WSDL4J experts out there that can help me?
> > >
> > > Regards.
> > >
> > > Steve Pannier
> > >
> > >
> > > > Per the WSDL spec, the soap:header element [1] is constructed as
> > follows:
> > > >
> > > > <soap:header message="qname" part="nmtoken" use="literal|encoded"
> > > >                           encodingStyle="uri-list"?
namespace="uri"?>
> *
> > > >
> > > > The message="qname" and part="nmtoken" attributes refer to a message
> > > <part>
> > > > element [2], and you must define that message <part>.
> > > >
> > > > <message name="nmtoken"> *
> > > >         <part name="nmtoken" element="qname"? type="qname"?/> *
> > > >     </message>
> > > >
> > > > The wsdl:part requires either an element or a type attribute. If you
> > were
> > > > sending a simple type, then you could just specify type="xsd:string"
> and
> > > use
> > > > SOAP encoding to format the header for you. But you want to send a
> > > complex
> > > > element, so you must define the element structure, which you do in
> the
> > > > <types> section.
> > > >
> > > > [1] http://www.w3.org/TR/wsdl#_soap:header
> > > > [2] http://www.w3.org/TR/wsdl#_messages
> > > >
> > > > Perhaps someone else can provide a WSDL4J code sample? (but I don't
> > think
> > > > that WSDL4J provides a Schema API -- which is necessary for creating
> the
> > > > <types> section).
> > > >
> > > > Anne
> > > >
> > > > ----- Original Message -----
> > > > From: "Steve Pannier" <[EMAIL PROTECTED]>
> > > > To: <[EMAIL PROTECTED]>
> > > > Sent: Wednesday, July 30, 2003 12:52 PM
> > > > Subject: Re: Adding header info to WSDL
> > > >
> > > >
> > > > > A couple questions:
> > > > >
> > > > > 1) Do you have any examples of doing this programmatically using
> the
> > > > WSDL4J
> > > > > API?
> > > > >
> > > > > 2) Why do I need to add stuff to the "types" and "part" sections
of
> > the
> > > > > WSDL?  The spec only mentions
> > > > >      the soap:header element in the binding input section when
> talking
> > > > > about Soap Header support.
> > > > >
> > > > > Regards.
> > > > >
> > > > > Steve Pannier
> > > > >
> > > > >
> > > > > ----- Original Message -----
> > > > > Yes.
> > > > > - define the <authentication> element in the <types>  section.
> > > > > - define an additional <part> in your input message and reference
> the
> > > > > authentication element.
> > > > > - add a <soap:header> element to the <input> element in the
> <binding>
> > > and
> > > > > reference the header message part (see [1])
> > > > >
> > > > > [1] http://www.w3.org/TR/wsdl#_soap:header
> > > > >
> > > > > Anne
> > > > >
> > > > > ----- Original Message -----
> > > > > From: "Sam Khan" <[EMAIL PROTECTED]>
> > > > > To: <[EMAIL PROTECTED]>
> > > > > Sent: Monday, July 28, 2003 4:26 PM
> > > > > Subject: Adding header info to WSDL
> > > > >
> > > > >
> > > > > > Hi,
> > > > > >
> > > > > > Is it possible to specify header parameters in a web service's
> WSDL
> > ?
> > > > > > Specifically, I want
> > > > > > to ensure that  a client sends the following elements in a SOAP
> > > header:
> > > > > >
> > > > > > <authentication>
> > > > > > <username></username>
> > > > > > <password></password>
> > > > > > </authentication>
> > > > > >
> > > > > > Can this be enforced in the WSDL?
> > > > > >
> > > > > > Many thanks
> > > > > > Sam
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > >
> >
>
>

Reply via email to