This issue is described in AXIS2-5071, affects 1.5.5 and 1.6.0 and will be fixed in 1.5.6 and 1.6.1.
Andreas On Thu, Aug 25, 2011 at 22:27, Fazle Khan <fazlesk...@gmail.com> wrote: > We have been trying to upgrade from Axis 1.5.4 to Axis2 1.6.0 and are > stumped by Axis2 not correctly serializing a custom soap header > defined in the server’s wsdl. > > The definition of the custom header defined in the wsdl is > > <xs:element name="RequestHeader"> > <xs:complexType> > <xs:all> > <xs:element name="ipaddress" type="xs:string"> > <xs:annotation> > <xs:documentation> > This should contain the IP address > on which the client is running. > </xs:documentation> > </xs:annotation> > </xs:element> > <xs:element name="serverId" type="xs:string"> > <xs:annotation> > <xs:documentation> > the edge server handling the > external client connection > </xs:documentation> > </xs:annotation> > </xs:element> > <xs:element name="sessionId" type="xs:string"> > <xs:annotation> > <xs:documentation> > external client's session id on > the edge server > </xs:documentation> > </xs:annotation> > </xs:element> > </xs:all> > </xs:complexType> > </xs:element> > > <wsdl:message name="RequestHeader"> > <wsdl:part element="sch:RequestHeader" name="RequestHeader"> > </wsdl:part> > </wsdl:message> > > And the header is included in each soap operation > > <wsdl:operation name="Authentication"> > <soap:operation soapAction=""/> > <wsdl:input name="AuthenticationRequest"> > <soap:body use="literal"/> > <soap:header message="tns:RequestHeader" > part="RequestHeader" use="literal"> > </soap:header> > </wsdl:input> > <wsdl:output name="AuthenticationResponse"> > <soap:body use="literal"/> > </wsdl:output> > </wsdl:operation> > > When the axis2 client tries to serialize the RequestHeader object only > the first child element (‘ipaddress’) is correctly serialized, the > other two child elements (‘serverId’ and ‘sessionId’) are ignored. > > The resulting soap message > > <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> > <soapenv:Header> > <sch:RequestHeader xmlns:sch="http://cithaeron.com/schemas" > soapenv:mustUnderstand="0"> > <sch:ipaddress>127.0.0.2</sch:ipaddress> > </sch:RequestHeader> > </soapenv:Header> > <soapenv:Body> > <sch:AuthenticationRequest xmlns:sch="http://cithaeron.com/schemas"> > <sch:loginName>remvoed</sch:loginName> > <sch:password>removed</sch:password> > </sch:AuthenticationRequest> > </soapenv:Body> > </soapenv:Envelope> > > The code below was run with XmlBeans but the same behavior was seen with ADB > > final PublicServiceStub publicStub = new > PublicServiceStub(zeusPublicUrl); > > final RequestHeaderDocument requestHeaderDoc = > RequestHeaderDocument.Factory.newInstance(); > final RequestHeaderDocument.RequestHeader requestHeader = > requestHeaderDoc.addNewRequestHeader(); > requestHeader.setIpaddress("127.0.0.1"); > requestHeader.setServerId("192.168.1.1"); > requestHeader.setSessionId("mySessionId"); > > > final AuthenticationRequestDocument requestDoc = > AuthenticationRequestDocument.Factory.newInstance(); > final AuthenticationRequestDocument.AuthenticationRequest > request = requestDoc.addNewAuthenticationRequest(); > request.setLoginName("removed"); > request.setPassword("removed"); > final AuthenticationResponseDocument responseDoc = > publicStub.authentication(requestDoc, requestHeaderDoc); > final AuthenticationResponseDocument.AuthenticationResponse > response = responseDoc.getAuthenticationResponse(); > log.info("serverId: " + response.getServerId()); > log.info("sessionId: " + response.getSessionId()); > log.info("ipaddress: " + response.getIpaddress()); > > > -Fazle > > --------------------------------------------------------------------- > To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org > For additional commands, e-mail: java-user-h...@axis.apache.org > > --------------------------------------------------------------------- To unsubscribe, e-mail: java-user-unsubscr...@axis.apache.org For additional commands, e-mail: java-user-h...@axis.apache.org