So erhalten Sie den Fehlercode von SOAP fault beim Behandeln einer benutzerdefinierten Fehlerausnahme

8

Unser System verwendet den SOAP-Web-Service, wobei JAX-WS-Client-Stubs verwendet werden, die basierend auf der WSDL des Service generiert werden. Im Falle eines Fehlers gibt der Server SOAP-Fehler wie folgt zurück:

%Vor%

Basierend auf WSDL SomeCustomFault wird die Exception-Klasse generiert und alle Service-Methoden deklarieren diese Exception (siehe unten).

%Vor%

Wie Sie sehen können, erweitert diese benutzerdefinierte Fehlerausnahme Exception und nicht SOAPFaultException . Ich brauche den Fehlercode von SOAP fault, der nur von SOAPFaultException Methode getFaultCode . Können Sie mir sagen, wie ich SOAPFaultException oder SOAP-Fehler erreichen kann Fehlercode an der Stelle, wo ich oben genannten benutzerdefinierten Fehler Ausnahme fangen?

    
Nikoloz 20.11.2013, 13:26
quelle

1 Antwort

9

Sie könnten einen Handler von JAX-WS implementieren Fügen Sie es zu Ihrer Client-Webdienst-Referenz hinzu. Dies wird Gelegenheit gegeben, die Anforderungsnachricht und die Antwortnachricht zu behandeln ODER über einen Fehler benachrichtigt zu werden.

Erstellen Sie eine SOAPHandler<SOAPMessageContext> und Ihre handleFault() -Methode wird die SOAPMessageContext übergeben. Von diesem können Sie getMessage().getSOAPBody().getFault() erhalten, um das SOAPFault zu erhalten, das getFaultCode() und getDetail() enthält.

Weisen Sie Ihren neuen Fehlerbehandler Ihrem Web Service Ref zu. Ein Weg ist via @HandlerChain . Es wird vor Ihrer catch -Klausel aufgerufen.

    
Scott Heaberlin 23.03.2014, 02:26
quelle

Tags und Links