I wrote a sample service which uses the Headers and it worked fine.

Can you please send your wsdl and Client?

Amila.

On 8/1/07, Mehar <[EMAIL PROTECTED]> wrote:
>
> Hai All,
>
> I have a wsdl with a singele service and many operations.
>
> The typical payload for an operation will look like this
> <soapEnv:Envelope>
>
> <soapEnv:Header>
> <sessonId>123123123141341</sessionId>
> <source>32312312312312</source>
>
> <security>
> <usernameToken>
> <userName>afjlksdajflas</userName>
> <password>fsdakljfaskljf</password>
> </usernameToken>
> </security>
>
> <soapEnv:Header>
>
> <soapEnv:Body>
> </soapEnv:Body>
>
> </soapEnv:Envelope>
>
> wsdl fragments corrosponding to that are given here
>
> <wsdl:types>
>         <xsd:schema
>             targetNamespace="xxxx"
>             elementFormDefault="qualified">
>             <xsd:include schemaLocation="wsdl_types.xsd" />
>             <xsd:element name="sessionid" type="xsd:string" />
>             <xsd:element name="source" type="xsd:string" />
>         </xsd:schema>
> </wsdl:types>
>
>
> <!--  Message definitions  -->
>     <wsdl:message name="session">
>         <wsdl:part name="sessionTokenHeader" element="types:sessionid" />
>     </wsdl:message>
>
>     <wsdl:message name="security">
>         <wsdl:part name="usernameTokenHeader" element="wsse:Security" />
>     </wsdl:message>
>
>     <wsdl:message name="source">
>         <wsdl:part name="sourceTokenHeader" element="types:source" />
>     </wsdl:message>
>
>
> <wsdl:operation name="myoperation">
>             <wsdl:input>
>                 <wsdlsoap:header message="tns:session"
>                     part="sessionTokenHeader" use="literal" />
>                 <wsdlsoap:header message="tns:security"
>                     part="usernameTokenHeader" use="literal" />
>                 <wsdlsoap:header message="tns:source"
>                     part="sourceTokenHeader" use="literal" />
>                 <wsdlsoap:body use="literal" />
>             </wsdl:input>
>             <wsdl:output>
>                 <wsdlsoap:body use="literal" />
>             </wsdl:output>
>             <wsdl:fault name="fault">
>                 <wsdlsoap:fault name="fault" use="literal" />
>             </wsdl:fault>
>         </wsdl:operation>
>
> The stub got generated has the following code to add the headers
> // add the children only if the parameter is not null
>                                         if (sessionId563!=null){
>
>
> org.apache.axiom.om.OMElement omElementsessionId563 = toOM(sessionId563,
> optimizeContent(new javax.xml.namespace.QName ("xxxx", "myoperation")));
>
> org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksessionId563 =
> env.getHeader().addHeaderBlock(omElementsessionId563.getLocalName (),
> omElementsessionId563.getNamespace());
>
> soapHeaderBlocksessionId563.addChild(omElementsessionId563.getFirstElement
> ());
>
>                                         }
>
>                                         // add the children only if the
> parameter is not null
>                                         if (security564!=null){
>
>
> org.apache.axiom.om.OMElement omElementsecurity564 = toOM(security564,
> optimizeContent(new javax.xml.namespace.QName("xxxx", "myoperation")));
>
> org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksecurity564 =
> env.getHeader().addHeaderBlock(omElementsecurity564.getLocalName(),
> omElementsecurity564.getNamespace ());
>
> soapHeaderBlocksecurity564.addChild(omElementsecurity564.getFirstElement
> ());
>
>                                         }
>
>                                         // add the children only if the
> parameter is not null
>                                         if (source565!=null){
>
>
> org.apache.axiom.om.OMElement omElementSource565 = toOM(Source565,
> optimizeContent(new javax.xml.namespace.QName("xxxxx", "myoperation")));
>
> org.apache.axiom.soap.SOAPHeaderBlock soapHeaderBlocksource565 =
> env.getHeader().addHeaderBlock(omElementSource565.getLocalName(),
> omElementSource565.getNamespace());
>
> soapHeaderBlockSource565.addChild(omElementSource565.getFirstElement());
>
>                                         }
>
> If u look at the bold stuff results in a null pointer, here i will explain
> how
> omElementsource565 = <source>31234234213<source>
> soapHeaderBlocksource565 =<soap/>
> omElementSource565.getFirstElement() = null;
> soapHeaderBlockSource565.addChild(omElementSource565.getFirstElement ());
> throws a null pointer....
>
> Is there something i am doing wrong is this a problem with the code
> generation?
> I am using axis2-1.3RC2, namespaces are omitted in the examle
> Thanks in advance
> --
> Rgds
> Mehar
>



-- 
Amila Suriarachchi,
WSO2 Inc.

Reply via email to