Untergeordnete Elemente hinzufügen zu benutzerdefinierten SOAP-header in Spring-WS

Ich bin Aufruf eines SOAP-webservice mit Spring-WS. Der webservice in Frage, verlangt von mir einige Informationen im SOAP-header, so wie hier gezeigt:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
   <soapenv:Header>
      <CustomHeaderElement>
         <clientID>xyz</clientID>
         <wsdlVersion>1.0</wsdlVersion>
         <serviceType>ExampleService_v1</serviceType>
      </CustomHeaderElement>
   </soapenv:Header>
   <soapenv:Body>
   ...
   </soapenv:Body>
</soapenv:Envelope>

Ich habe herausgefunden, wie man hatte die top-level-CustomHeaderElement, aber ich sehe nichts in die Spring-WS-API, die mir erlaubt, ein child-element hinzufügen. Hier ist was ich habe, so weit:

WebServiceTemplate template = ...;

template.marshalSendAndReceive(request, new WebServiceMessageCallback(){
    public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException{
        SoapMessage soapMessage = (SoapMessage)message;
        SoapHeader soapHeader = soapMessage.getSoapHeader();
        QName qName = new QName("CustomHeaderElement");
        SOAPHeaderElement headerElement = soapHeader.addHeaderElement(qName);
        //would like to do something like headerElement.addChild(clientIdNode);
    }
});

Das problem ist headerElement scheint nicht auszusetzen, bedeutet tatsächlich das hinzufügen eines Kindes. Ich weiß, ich kann ein Attribut hinzuzufügen, aber das ist nicht das, was ich brauche für diesen service nennen. Weiß jemand wie ich das hinzufügen könnte, die notwendige Kind-Elemente zu meine custom-header?

InformationsquelleAutor der Frage Mike Deck | 2010-10-27

Schreibe einen Kommentar