2017-11-12 3 views
0

Ich habe POJO-Klasse mit dem Namen RequestSOAPHeader für SOAP-Header.So fangen Sie benutzerdefinierte SOAP-Header localPart Anfrage im Frühjahr Boot

Im @Endpoint Ich Fang die Header wie unten

@SoapHeader("{" + RequestSOAPHeader.AUTH_NS + "}RequestSOAPHeader")SoapHeaderElement auth 

Mein Problem ist, wenn ich versuche, meine Header in POJO Klasse entordnen ich folgende Fehlermeldung habe.

javax.xml.bind.UnmarshalException: unexpected element (uri:"http://www.test.com/schema/common/v2_1", local:"RequestSOAPHeader"). Expected elements are <{http://www.test.com/schema/common/v2_1}requestSOAPHeader> 

ich die folgende Methode verwenden für unmarsahlling meinen Kopf

private RequestSOAPHeader getAuthentication(SoapHeaderElement header){ 
    RequestSOAPHeader authentication = null; 
    try { 

     JAXBContext context = JAXBContext.newInstance(RequestSOAPHeader.class); 
     Unmarshaller unmarshaller = context.createUnmarshaller(); 
     authentication = (RequestSOAPHeader) unmarshaller.unmarshal(header.getSource()); 

    } catch (JAXBException e) { 
     e.printStackTrace(); 
    } 
    return authentication; 
} 

Nach dem Fehler, den ich meinen Kopflokalteil Namen requestSOAPHeader geändert habe und es funktioniert gut.

@SoapHeader("{" + RequestSOAPHeader.AUTH_NS + "}requestSOAPHeader")SoapHeaderElement auth 

Aber ich will für Kopf RequestSOAPHeader als Lokalteil verwenden, nicht requestSOAPHeader

+0

Haben Sie irgendeine Klasse, die SOAPMandler 'implementiert? –

+0

Nein. Ich verwende keine Klasse, die SOAPMandler implementiert. Ich benutze die erwähnte Methode getAuthentication (SoapHeaderElement header) um den Header zu entpacken. – Saikat1529

Antwort

0

Ich habe gefunden, bereits die Lösung.

Fügen Sie einfach den folgenden Ausschnitt @annotation Wert über die Header-Klasse. Hoffe, es hilft

@XmlRootElement(namespace = "http://www.gooogle.com", name = "RequestSOAPHeader") 
public class RequestSOAPHeader{ 
.... 
} 
Verwandte Themen