Webservice
Einstellungen des Webservice-Anbieters
Um einen eigenen Webservice anzubieten, hinterlegen Sie im Modul "Integration" im linken Bereich unter dem Punkt "Daten anbieten / Webservice" die erforderlichen Einstellungen. Den entsprechenden Dialog erreichen Sie im Kontextmenü "Einstellungen", wenn der Eintrag "Webservice" markiert ist.
Bindungsadresse
Definiert, wer auf den Webservice zugreifen darf. Wird "localhost" eingetragen, so ist der Webservice nur lokal verfügbar. Alternativen sind
-
jede (IPv4)
-
jede (IPv6)
-
eine IP-Adresse
Wählen Sie "localhost", wenn Sie Ihren ersten Webservice lokal testen wollen.
Port
Legt fest, unter welchem TCP-Port der Webservice erreichbar sein soll. Idealerweise nutzen Sie eine Portnummer zwischen 49152 und 65535, einen so genannten "Private Port". Diese lassen sich variabel einsetzen, da sie nicht registriert und damit keiner Anwendung zugehörig sind.
Host / Port
Bilden zusammen die Endpoint-URL, unter der ihr Webservice erreichbar sein soll. Der Webservice kann für die öffentliche Verwendung auch einfach unter Ihrer Domain eingebunden werden.
Endpoint-URL
Wird automatisch aus den vorhergehenden Einträgen erzeugt.
Anbieter Aktiv
Mit dieser Einstellung ist der Webservice ab sofort unter der Endpoint-URL erreichbar.
Klicken Sie "OK", um die Einstellungen zu speichern.
Webservice erstellen
Ein neuer Webservice kann über das Hauptmenü "Webservice / Neuer Webservice" erstellt werden. Dazu muss der der Eintrag "Webservice" unter "Daten anbieten" markiert sein. Damit selbst erstellte Webservices genutzt werden können, müssen die Einstellungen des Webservice-Anbieters entsprechend konfiguriert sein.
Allgemeine Eigenschaften des Webservice
Tragen Sie hier einen eindeutigen Namen ein. Unter dem hier eingetragenen Namensraum ist der Webservice später erreichbar. Auch eine kurze Beschreibung des Webservices kann hier erfasst werden.
Abweichende Service-Location
Für Netzwerk-Szenarien, in denen Clients den Webservice über die hier definierte Location unabhängig von der auf Intrexx-Seite definierten Bindungsadresse und Port aufrufen. Die abweichende Service-Location wird im WSDL eingetragen.
Klicken Sie "Weiter".
Operationen
Hier wird der Name und die Beschreibung von bestehenden Operationen angezeigt.
Hinzufügen einer Operation / Bearbeiten einer Operation
Öffnet einen jeweils einen Dialog, in dem eine Operation erstellt oder bearbeitet werden kann. Weitere Informationen dazu finden Sie hier.
Löschen einer Operation
Löscht die aktuell markierte Operation.
Wenn Sie die gewünschte(n) Operation(en) definiert haben, klicken Sie hier "Weiter".
Fertig stellen
Webservice konsumieren
Wenn Sie den Webservice im selben Portal verwenden wollen (z.B. mit einer Webservice-Aktion in Prozessen), aktivieren Sie hier die Einstellung "Webservice konsumieren und konfigurieren Sie dann im nächsten Schritt die Registrierung des Webservices. Alle Informationen dazu finden Sie hier.
Operationen
Einfügen
Mit diesem Operationstyp wird ein neuer Datensatz, z.B. ein neuer Artikel, an den Webservice geliefert, der im Original-Datenbestand eingefügt werden soll.
Aktualisieren
Hier wird ein bestehender Datensatz in der Quellapplikation geändert.
Löschen
Mit diesem Operationstyp wird ein bestehender Datensatz in der Quellapplikation gelöscht. Im Wesentlichen unterscheidet sich die Vorgehensweise bei der Definition der Operation nicht vom Operationstyp "Aktualisieren". Der zu löschende Datensatz wird auch hier anhand der übergebenen ID ermittelt. Zusätzliche Übergabeparameter, also weitere Datenfelder, die beim Abgleich berücksichtigt werden, können nicht definiert werden. Beim Löschen eines Datensatzes wäre dies ohnehin nicht erforderlich.
Lesen
Bei diesem Operationstyp werden die Daten von bestehenden Datensätzen lediglich gelesen. Auch hier erfolgt die Identifikation automatisch über die ID. Als Rückgabeparameter können alle Datenfelder der Quellapplikation gewählt werden.
Auflisten
Dieser Operationstyp unterscheidet sich von den anderen Typen insofern, als das hier mehrere Datensätze, vergleichbar mit einem Array, gelesen werden können. Der Operationstyp kann z.B. für die Suche nach dem Vorkommen einer bestimmten Zeichenfolge in Artikelnummern verwendet werden.
Klicken Sie "Weiter", wenn Sie den gewünschten Operationstyp ausgewählt haben.
Datengruppe auswählen
Hier kann nach dem Namen oder der GUID der Applikation gesucht werden. Wählen Sie die gewünschte Applikation mit einem Klick aus. Wählen Sie anschließende die gewünschte Datengruppe, deren Daten per Webservice zur Verfügung gestellt werden sollen, aus.
Klicken Sie "Weiter".
Übergabeparameter und Rückgabeparameter
Dieser Dialog wird auch für die Definition von Rückgabeparametern verwendet.
Der Parametername kann hier mit einem Doppelklick geändert werden. In der zweiten Spalte wird der Name des Datenfeldes aus der Quellapplikation angezeigt. Dieser Name kann nicht geändert werden. In der Spalte "Optional" kann festgelegt werden, welche Datengruppenfelder bei einem Input als Pflichtfelder gelten. Ist ein Feld als optional markiert, ist die Eingabe eines Wertes nicht zwingend erforderlich.
Hinzufügen eines Datenbankparameters / Bearbeiten eines Parameters
Diese Schaltfläche ist nur bei den Operationstypen "Einfügen" oder "Auswählen" aktiv. Sie öffnet einen Dialog, in dem Datenfelder ausgewählt werden können. Damit wird festgelegt, welche Daten bei einem Input erhoben werden müssen.
Datenfeldauswahl
Wählen Sie hier das gewünschte Datenfeld aus.
Wenn Sie einen Parameter erneut bearbeiten, finden Sie an dieser Stelle zusätzlich den Reiter "Allgemein".
Parameter ID bearbeiten
Hier kann der Name des Parameters geändert werden.
Klicken Sie anschließend "OK", um die Änderungen zu speichern und den Dialog wieder zu schließen.
Hinzufügen eines Requestparameters / Bearbeiten eines Parameters
Öffnet einen Dialog, in dem ein Requestparameter definiert werden kann. Dazu muss der Operationstyp "Auflisten" ausgewählt sein.
Parameter hinzufügen
Geben Sie der Requestvariablen einen eindeutigen Namen. Dieser Name wird für die Zuordnung in der WSDL-Datei verwendet.
Die Bezeichnung der Requestvariablen muss in Intrexx mit "rq_" beginnen. Andernfalls wird die Variable nicht als Requestvariable erkannt. Dieses Präfix wird hier automatisch eingefügt, wenn Sie den Namen der Requestvariablen eintragen. Der Wert wird automatisch in der hier definierten Requestvariablen abgelegt.
Die Requestvariable wiederum wird bei der Rückgabe verwendet, um den Datenbestand auf den Inputwert zu filtern. Wenn Sie z.B. nach Artikelnummern suchen, die die Zeichen "SW" für Software enthalten, wird der Wert SW in der Requestvariablen abgelegt. Der Operationstyp "Auflisten" setzt dann eine Abfrage nach dieser Zeichenfolge in den Quell-Daten ab und gibt alle Datensätze zurück, die die Zeichen SW in der Artikelnummer enthalten.
Klicken Sie "OK", um Eingaben zu speichern und den Dialog wieder zu schließen.
Hinzufügen eines Datensatzanzahlparameters
Setzt den rowcount-Parameter ein. Dazu muss der Operationstyp "Auflisten" ausgewählt sein. Mit diesem Parameter wird die maximale Anzahl der Datensätze festgelegt, die zurückgegeben werden soll. Auch hier kann entschieden werden, ob der Parameter optional angegeben werden kann oder zwingend erforderlich ist.
Klicken Sie "Weiter".
Listenfilter
Wenn Sie die Operation "Auflisten" ausgewählt haben, können Sie hier einen Filter erstellen, um die Liste einzuschränken. Weitere Informationen zu diesem Dialog finden Sie hier.
Klicken Sie "Weiter".
Weitere Einstellungen
Wenn Sie die Operation "Auflisten" ausgewählt haben, können Sie hier die folgenden Einstellungen bearbeiten:
Werte
Anzahl Datensätze
Wenn der Parameter "rowcount" nicht als Übergabeparameter definiert wurde, so kann hier die maximale Anzahl der zurückgegebenen Datensätze festgesetzt werden.
Sortierung
Spalte verfügbare Felder
Hier werden alle Felder aufgelistet, nach denen sortiert werden kann.
Spalte ausgewählte Sortierfelder
Die hier aufgelisteten Felder sortieren den Datenbestand. Ob auf- oder absteigend sortiert wird, kann über das Kontextmenü der Felder festgelegt werden.
Verschiebt das aktuell markierte Feld von einer Liste in die andere.
Ändert die Reihenfolge der Sortierfelder.
Klicken Sie "Weiter".
Allgemeine Eigenschaften der Operation
Legen Sie hier wird den Namen der neuen Operation fest. Auch eine Beschreibung, die die Operation erläutert und später bei der Registrierung bzw. der Auswahl einer Operation angezeigt wird, kann hier eingetragen werden.
Klicken Sie "OK", um Eingaben zu speichern und den Dialog wieder zu schließen.
HTTPS-Verschlüsselung
Im Folgenden wird davon ausgegangen, dass bereits entsprechende Zertifikate sowie keystore und truststore vorliegen. Es ist darauf zu achten, dass keystore und truststore vom Typ Java-Keystore sind.
AXIS2 konfigurieren
Um einen Transport per HTTPS einzurichten, müssen Änderungen an der Axis2-Konfigurationsdatei vorgenommen werden. Wechseln Sie dazu in das Portalverzeichnis "internal/webservice/provider/axis2/conf/" und öffnen Sie die Datei "axis2.xml" in einem Texteditor. Suchen Sie nun nach folgendem Eintrag:
<!-- ================================================= -->
<!-- Non-blocking http/s Transport Listener -->
<!-- the non blocking http transport based on HttpCore + NIO extensions -->
<transportReceiver class="de.uplanet.lucy.server.webservice.provider.axis2.transport.nhttp.HttpCore NIOListener" name="http">
<parameter locked="false" name="port">"WS_PORT"</parameter>
<parameter locked="false" name="non-blocking">true</parameter>
<parameter locked="false" name="hostname">"HOST_NAME"</parameter>
</transportReceiver>
Unterhalb dieses Eintrags finden Sie das auskommentierte Element <transportreceiver>. Entfernen Sie die Kommentar-Tags, um den Eintrag zu aktivieren.
<!-- the non blocking https transport based on HttpCore + SSL-NIO extensions -->
<transportReceiver class="de.uplanet.lucy.server.webservice.provider.axis2.transport.nhttp.HttpCore
NIOSSLListener" name="https">
<parameter locked="false" name="port">SSL_WS_PORT</parameter>
<parameter locked="false" name="non-blocking">true</parameter>
<parameter locked="false" name="keystore">
<KeyStore>
<Location>KEYSTORE.jks</Location>
<Type>JKS</Type>
<Password>KEYSTORE_PASSWORD</Password>
<KeyPassword>KEY_PASSWORD</KeyPassword>
</KeyStore>
</parameter>
<parameter locked="false" name="truststore">
<TrustStore>
<Location>TRUSTSTORE.jks</Location>
<Type>JKS</Type>
<Password>TRUSTSTORE_PASSWORD</Password>
</TrustStore>
</parameter>
<parameter name="SSLVerifyClient">require</parameter>
<!--supports optional|require or defaults to none -->
</transportReceiver>
Geben Sie die folgende Werte korrekt an:
Parameter |
Beschreibung |
---|---|
SSL_WS_PORT |
Port, über den der https-Webservice aufgerufen werden kann. Es ist darauf zu achten, dass dieser Port vom Port für ungesicherte Webserviceaufrufe unterscheidet. |
KEYSTORE.jks |
Pfad zum Keystore im Format JKS. Der Pfad muss relativ zum Portalverzeichnis "internal/webservice/provider/" angegeben werden. |
KEYSTORE_PASSWORD |
Passwort für den angegebenen Keystore. |
KEY_PASSWORD |
Passwort für den verwendeten Key. |
TRUSTSTORE.jks |
Pfad zum Truststore im Format JKS. Der Pfad muss relativ zum Portalverzeichnis "internal/webservice/provider/" angegeben werden. |
TRUSTSTORE_PASSWORD |
Passwort für den angegebenen Truststore. |
Wurden die Werte korrekt gesetzt, ist nach folgendem Eintrag zu suchen:
<transportSender class="org.apache.axis2.transport.http.CommonsHTTPTransportSender" name="https">
<parameter name="PROTOCOL">HTTP/1.1</parameter>
<parameter name="Transfer-Encoding">chunked</parameter>
</transportSender>
Unterhalb dieses Eintrags finden Sie ein weiteres, noch auskommentiertes Element <transportsender>. Entfernen Sie die Kommentar-Tags, um den Eintrag zu aktivieren.
<!-- the non-blocking https transport sender based on HttpCore + NIO SSL extensions-->
<transportSender name="https" class="de.uplanet.lucy.server.webservice.provider.axis2.transport.nhttp.Http
CoreNIOSSLSender">
<parameter name="non-blocking" locked="false">true</parameter>
<parameter name="keystore" locked="false">
<KeyStore>
<Location>KEYSTORE.jks</Location>
<Type>JKS</Type>
<Password>KEYSTORE_PASSWORD</Password>
<KeyPassword>KEY_PASSWORD</KeyPassword>
</KeyStore>
</parameter>
<parameter locked="false" name="truststore">
<TrustStore>
<Location>TRUSTSTORE.jks</Location>
<Type>JKS</Type>
<Password>TRUSTSTORE_PASSWORD</Password>
</TrustStore>
</parameter>
<parameter name="HostnameVerifier">DefaultAndLocalhost</parameter>
;<!--supports Strict|AllowAll|DefaultAndLocalhost or the default if none specified-->
</transportSender>
Geben Sie die folgende Werte korrekt an:
Parameter |
Beschreibung |
---|---|
KEYSTORE.jks |
Pfad zum Keystore im Format JKS. Der Pfad muss relativ zum Portalverzeichnis internal/webservice/provider/ angegeben werden. |
KEYSTORE_PASSWORD |
Passwort für den angegebenen Keystore. |
KEY_PASSWORD |
Passwort für den verwendeten Key. |
TRUSTSTORE.jks |
Pfad zum Truststore im Format JKS. Der Pfad muss relativ zum Portalverzeichnis "internal/webservice/provider/" angegeben werden. |
TRUSTSTORE_PASSWORD |
Passwort für den angegebenen Truststore. |
Speichern Sie die Datei und starten Sie anschließend den Portaldienst neu. Rufen Sie den im Browser die WSDL-Datei auf, um die HTTPS-Authentifizierung zu testen. Achten Sie hierbei auf die Angabe von HTTPS statt HTTP und des Ports. Ist die URL korrekt angegeben, muss das verwendete Zertifikat akzeptiert werden. Danach wird die WSDL-Datei im Browser angezeigt.