SOAP-Webservices

Sie haben sicher schon mal die Begriffe "SOAP", "Webservices" und "SOA" lesen. Nur was sich hinter diesen Schlagworten verbirgt und wie diese Technologie angewendet wird, verschließt sich den meisten Anwendern.

Hier wird in einfachen Schritten erklärt, wie Sie mit einem Profil Daten von einem externen Webservice abrufen bzw. an diesen senden können und wie Sie ein Profil erstellen können, das selbst als Webservice fungiert.

Wichtiger Hinweis: Die prinzipielle Vorgehensweise für den Datenempfang mittels HTTP sollte Ihnen bereits bekannt sein. Es werden hier nur die minimalen und für Webservices spezifischen HTTP-Einstellungen aufgezeigt. Bei speziellen Anforderungen wenden Sie sich bitte an die verlinkten Beschreibungen des jeweiligen Eingangsagenten, Antwortweges, oder der Funktion.

Begriffe


Webservice


Ein Webservice oder Webdienst ist eine Software-Anwendung, die mit einem Uniform Resource Identifier (URI) eindeutig identifizierbar ist und deren Schnittstelle als XML-Artefakt definiert, beschrieben und gefunden werden kann.

WSDL


Die Web Service Description Language (WSDL) ist eine plattform-, programmiersprachen- und protokollunabhängige Beschreibungssprache für Netzwerkdienste (Web Services) zum Austausch von Nachrichten auf Basis von XML.

SOAP


SOAP (ursprünglich für Simple Object Access Protocol) ist ein Netzwerkprotokoll, mit dessen Hilfe Daten zwischen Systemen ausgetauscht und Remote Procedure Calls durchgeführt werden können. SOAP stützt sich dabei auf andere Standards. XML zur Repräsentation der Daten und Internet-Protokolle der Transport- und Anwendungsschicht (vgl. TCP/IP-Referenzmodell) zur Übertragung der Nachrichten. Die gängigste Kombination ist SOAP über HTTP und TCP/IP. Die Abkürzung SOAP wird jedoch offiziell seit Version 1.2 nicht mehr als Akronym gebraucht, da es erstens (subjektiv) keineswegs einfach (simple) ist und da es
zweitens nicht nur dem Zugriff auf Objekte (Object Access) dient.

Wichtige Abgrenzung


Unsere Webservices verwenden SOAP 1.2, das über HTTP(S) transportiert wird.

Es werden soap:binding style="document" und soap:body use="literal" unterstützt.

Das bedeutet, dass in den SOAP-Body ein XML-Dokument eingebettet wird, also das Root-Element der XML-Nutzdaten einfach als Kindelement des SOAP-Bodies erscheint. Das entspricht der Einlieferung eines Dokumentes, in dem alle zu einem Geschäftsprozess gehörenden Daten enthalten sind.

Im Gegensatz dazu wäre der style="rpc" für einen Webservice typisch, der eine Vielzahl feinkörniger Minimalfunktionen bereitstellt, die der Client nacheinander in einer bestimmten Reihenfolge und Logik aufrufen muss. Das ist mit der Philosophie, dass vorrangig vollständige Dokumente konvertiert werden, unverträglich.

Wenn der Body nicht "literal", sondern "encoded" übertragen würde, wäre eine zusätzliche Phase im Profil für das Dekodieren der Nutzdaten vor dem Parsen nötig, bzw. für das Kodieren der Zieldaten vor dem Versenden per Webservice. Das ist unnötig, wenn man als Nutzdaten nicht native Objekte sendet und empfängt, sondern ein XML-Dokument. Unsere Webservices erwarten bzw. versenden XML-Daten, keine Java-Objekte.

Wenn Sie als Client einen fremden Webservices ansprechen wollen, der nicht die Anforderungen (SOAP 1.2, style="document" und use="literal") erfüllt, ist die entsprechende Konfiguration nicht unmöglich, aber das erfordert im besten Fall viel manuelle Bearbeitung der Konfiguration, erhöhten Implementierungs- und Test-Aufwand und eine gewisse Kooperation des Betreibers des Webservices. Automatische Implementierungshilfen, wie z. B. der Strukturimport aus dem WSDL-Dokument, versagen in diesem Fall. Im ungünstigsten Fall ist die Kommunikation nicht möglich.

SOAP 1.1


Sollten Sie dennoch SOAP 1.1 verwenden, dann beachten Sie bitte, dass der HTTP-Header SOAPAction manuell gesetzt werden muss. Siehe folgenden Abschnitt.