SOAP-Webservice ohne WSDL-Definition bereitstellen
Wie Sie mit der X4 BPMS SOAP-Webservices z.B. im RPC-Stil ohne WSDL-Definition via HTTP-POST bereitstellen, wird im Folgenden beschrieben.
Voraussetzungen:
- Grundlegendes Wissen über den Aufbau von SOAP-Webservices
- Ein Technical Process pro Webservice-Operation, der die Verarbeitung der eingehenden Anfrage übernimmt. Der Technical Process wird dabei über seine
x4db:/-URL
referenziert. - Ein URL-Part, über den der SOAP-Webservice via HTTP erreichbar sein soll, z.B. über
http://localhost:8080/X4/httpstarter/ReST/MyWebservice
. Diesen URL-Part haben Sie bereits typischerweise als Konstante innerhalb der Webservice-Konfiguration definiert, siehe Webservice-Konfiguration grafisch bearbeiten.
Um einen Technical Process als SOAP-Webservice ohne WSDL-Definition bereitzustellen, gehen Sie wie folgt vor:
Unter der gewünschten URL-Ressource (definiert z.B. durch einen konstanten URL-Part) über das Kontextmenü Add SOAP Service einen neuen Service-Eintrag vom Typ
SOAP
anlegen.SOAP-Version festlegen (entweder SOAP 1.1, SOAP 1.2 oder Unterstützung für beide Standards).
WSDL-Modus
NONE
wählen.Für jede Operation folgende Konfiguration hinterlegen:
- Als Namen den Qualified Name des ersten Elements im Body des SOAP Requests für die Operation hinterlegen.
Technical Process, der die Webservice-Anfrage über den X4 Server verarbeitet, über dessen
x4db:/-URL
verknüpfen.
Im Webservice Configuration Editor ist dies per Drag & Drop aus dem Repository Navigator möglich.Input Handler und Output Handler für den SOAP-Webservice definieren.
- Speichern und Webservice-Konfiguration mit Reload on Server anwenden.
Der SOAP-Webservice ist ab sofort aktiv und kann über dessen Service-URL ausschließlich via HTTP POST aufgerufen werden. Ein Aufruf der Service-URL via HTTP GET gibt keine WSDL-Definition zurück.
Beispiel: Konfiguration des Webservices ohne WSDL-Definition
<Service type="Soap">
<SoapVersion>
<SOAP11/>
<SOAP12/>
</SoapVersion>
<Wsdl mode="NONE"/>
<Namespace prefix="exampleSpace" namespace="http://example.org/namespace"/>
<Namespace prefix="anotherSpace" namespace="http://example.org/different/namespace"/>
<!-- requires unique qualified names for the operations -->
<Operation name="exampleSpace:SpacedOperation"
process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
<InputHandler type="SOAP-Envelope"/>
<OutputHandler type="SOAP-Envelope"/>
</Operation>
<Operation name="anotherSpace:SpacedOperation"
process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
<InputHandler type="SOAP-Envelope"/>
<OutputHandler type="SOAP-Envelope"/>
</Operation>
<Operation name="UnSpacedOperation"
process="x4db:/1/RestExamples/soap/DirectOutput.wrf">
<InputHandler type="SOAP-Envelope"/>
<OutputHandler type="SOAP-Envelope"/>
</Operation>
</Service>