Definieren von SOAP-Webservice-Fehlern

www.altova.com Dieses Kapitel drucken Vorherige Seite Eine Ebene nach oben Nächste Seite

Startseite >  Implementieren von SOAP-Webservices >

Definieren von SOAP-Webservice-Fehlern

Eine-WSDL-Datei kann ein fault-Element für eine Operation und ein Message-Attribut, das die Fehlermeldung enthält, enthalten. Sie können daher, wenn Sie einen SOAP-Webservice in MapForce erstellen, eine "Fault"-Komponente zu Ihrem Mapping hinzufügen. Dadurch löst der Webservice bei Erfüllung einer bestimmten Bedingung eine Ausnahme aus.

 

Um ein Fault-Element in ein Mapping einzufügen, muss in der WSDL-Datei ein fault-Element vorhanden sein.

 

Sie können die Fehlerbedingung sowie den Text der Fehlermeldung im Mapping selbst definieren. Wenn die Bedingung zutrifft, kommt es zum folgenden Webservice-Fehler:

 

In einer Live-Umgebung (wenn der Webservice auf einem Server bereitgestellt wurde und ausgeführt wurde) kommt es zu einem Webservice-Fehler und der Caller erhält die benutzerdefinierte Meldung.
In MapForce (bei der Erstellung des Designs) wird die Mapping-Ausführung beendet und Sie sehen die Meldung im Fenster Meldungen.

 

 

So fügen Sie eine Fehlerkomponente zu einem MapForce Mapping hinzu:

1.Klicken Sie im Menü Einfügen auf Ausnahme. (Klicken Sie alternativ dazu auf die Symbolleisten-Schaltfläche Ausnahme ic-component_exception .)
2.Wählen Sie WSDL-Fehler erzeugen aus.

mff_soap_add_fault

Anmerkung: Wenn die Option WSDL-Fehler erzeugen deaktiviert ist und Sie die Meldung "Keine Fehler für diese Operation" sehen, bedeutet dies, dass in der WSDL-Datei keine Fehler definiert sind und daher auch keine in MapForce hinzugefügt werden können.

 

Ein Beispiel für ein Mapping, das einen Webservice-Fehler enthält, finden Sie im folgenden MapForce-Beispielprojekt: <Dokumente>\Altova\MapForce2019\MapForceExamples\TimeService\TimeService.mfp. Doppelklicken Sie auf die Mapping-Operation getTimeZoneTime.mfd.

mff_soap_fault

 

 

Im obigen Beispiel sollte ein Ausnahmeereignis ausgelöst werden, wenn n0:timezone nicht gleich "UTC" ist.

 

Die equal-Komponente überprüft, ob timezone gleich UTC ist, das bool-Ergebnis wird an die filter-Komponente weitergegeben.
Wenn die Bedingung false ist, d.h. ein anderer Wert als UTC ist, aktiviert der on-false-Parameter der filter-Komponente das Ausnahmeereignis Fehler:errorSoapOut und der Mapping-Vorgang wird gestoppt. (Beachten Sie, dass Sie das Ausnahmeereignis bei Bedarf auch mit dem on-true-Parameter verbinden können.)
Die SoapFault-Message liefert zwei Fehlertext-Gruppen.

 

Es ist äußerst wichtig, wo Sie in diesem Beispiel die filter-Komponente platzieren:

 

Es müssen beide Parameter der filter-Komponente, sowohl on-true als auch on-false, gemappt werden! Einer muss auf die fault-Komponente gemappt werden und der andere auf die Zielkomponente, an die die gefilterten Daten der Quellkomponente übergeben werden. Andernfalls wird die fault-Komponente nie ausgelöst.
Die Ausnahmeereigniskomponente und die Zielkomponente müssen direkt mit der filter-Komponente verbunden werden. Zwischen die filter-Komponente und die Ausnahmeereignis- bzw. die Zielkomponente dürfen keine Funktionen oder andere Komponenten platziert werden.

© 2019 Altova GmbH