Übersicht
Mit dem DynamicWebserivceClient können beliebige Webservices aufgerufen werden, ohne dass entsprechender Client Code im B2B Core existieren muss (Dispatch-Client).
Der Inhalt für den Webservice-Aufruf (xml) kann, wenn er nicht dem NachrichtenInhalt der B2B entspricht, über einen Generator/Content erstellt werden.
Generator erzeugen
Der Webservice benötigt eine xml-Datei als Request. Das Schema dazu kann der wsdl
entnommen werden. Diese xml-Datei kann über einen Generator erzeugt werden. Es kann dabei der fachliche Inhalt des Aufrufs (wie in der wsdl Datei) oder auch der technische Inhalt (mit SOAP envelope) erzeugt werden.
Das jar-Datei des Generators wird als Content in die B2B hochgeladen.
Einrichten der B2B-Plattform
Zu installierender Generator
Der Generator bewirkt die „Übersetzung“ der Eingangsnachricht (z.B hier eine MSCONS-Nachricht nach MIG 2.2C) in eine entsprechende Webservice-Anfrage.
Der Generator wird im Bereich „Administration“ unter dem Reiter „Content“ hochgeladen.
(Administration -> Content -> Hinzufügen)
Das Content-jar muss wie folgt installiert werden:
Eigenschaft |
Wert |
Provider |
NLI |
Version |
1.0 |
Typ |
NLC |
Format |
MSCONS |
Format Version |
2.2B |
Zielformat |
<beliebig, am besten sprechender Name des xml Request Typen> |
Dokument |
<Content-Jar des Generators> |
Als Dokument ist das Content-jar zu wählen. Als Name des Zielformats wählt man passenderweise den Namen der verwendeten Request-Struktur aus dem WSDL
.
Falls verschiedene Nachrichten-Versionen verarbeitet werden sollen, muss für jede Version ein solcher Content-Eintrag angelegt werden.
Einrichten des Service
Der Service dient dazu, die Webservice-Anfrage auf dem entfernten System durchzuführen.
Der Service wird im Bereich „Administration“ unter dem Reiter „Service“ angelegt.
(Administration -> Services -> Hinzufügen)
Der Service muss wie folgt angelegt werden
Eigenschaft |
Wert |
Beschreibung |
ID |
SOAPCLIENT |
ID des Service |
Name |
Dynamic Webservice Client (Beliebiger Text) |
Name, der im Monitor angezeigt wird |
Typ |
WEBSERVICE |
|
Klasse |
org.b2bbp.webservices.DynamicWebServiceClient |
|
Channel |
<leer> |
|
Richtung |
Business Partner nach Engine |
|
Status |
STP |
|
Erstellt von: |
NLI |
|
Optionen |
<leer> |
Der hinzugefügte Service wird ohne Eigenschaften konfiguriert.
Hinweis zum Service
Für Entwicklungszwecke, und falls der aufgerufene Webservice es erlaubt, den gleichen Aufruf mehrfach einzusenden, kann das Attribut B3P_SKIPABLE
auf false
gesetzt werden. Dann wird bei jedem Neustart der Nachricht der Aufruf erneut durchgeführt, auch wenn er vorher erfolgreich war.
Action erstellen
Die Action sorgt dafür, dass die Nachricht in eine Anfrage an den Webservice umgewandelt wird, und der externe Webservice durch den Webservice-Client aufgerufen wird.
Die Action wird unter Administration -> Actions -> Hinzufügen angelegt.
Eigenschaft |
Wert |
Beschreibung |
ID |
numerischer Text, vergeben durch das System |
Interne ID, Vorgabewert übernehmen |
Name |
<sprechender Name, am besten entsprechend dem SOAP Service Namen, bzw. der SOAPAction> |
Beliebiger Name |
Klasse |
com.b2bbp.runtime.actions.nlc.NLCAction2 |
|
Typ |
Java |
|
Version |
1.0 |
|
Beschreibung |
<sinnvolle fachliche Beschreibung> |
Die Action muss mit folgenden Attributen versehen werden:
Eigenschaft |
Inhalt |
Beschreibung |
B3P_USED_SERVICE_ID |
SOAPCLIENT |
ID des oben definierten Service |
HTTP_URL |
<URL> |
URL des Webservice, ohne wsdl |
content-nlc-provider |
NLI |
Gleich zum oben definierten Generator Content "Provider" |
content-nlc-out |
<String> |
Gleich zum oben definierten Generator Content "Zielformat" |
content-nlc-version |
1.0 |
Gleich zum oben definierten Generator Content "Version" |
B3P_USE_REGISTRY |
true |
Immer auf true setzen. |
B3P_SOAP_SERVICE_NAME |
<Namespace, localName> |
QName des Service aus der wsdl-Datei im Format URI,localPart (targetNamespace +"," + name-Attribute des portType-Elements in der wsdl |
B3P_SOAP_PORT_NAME |
<Name des Ports>, wenn ein bestimmter Port verwendet werden soll. Optional |
targetNamespace der wsdl + "," + name-Attribut des port-Elements in der wsdl. Falls kein Port mit dem angegebenen Namen verfügbar ist, wird er erzeugt. |
B3P_SOAP_ACTION |
<Name der SoapAction>, nur notwendig bei .NET-Services. Sonst Optional |
targetNamespace der wsdl + "/" + name-Attribut des operation-Elements in der wsdl |
Alle Attribute bekommen ein Häkchen bei „Zur Laufzeit überschreiben“ und „technisch“.
Konfigurationen Global Properties
LOG_LEVEL
Global Property: org.b2bbp.webservices.DynamicWebServiceClient.LOG_LEVEL
Wird dieses optionale Property auf den Wert 1 gesetzt, so werden die abgesetzten HTTP Aufrufe im MessageContext aufgezeichnet.
Einrichten der Action auf einem Channel
Die neu definierte Action muss auf einem geeignete Channel eingebaut werden.
Nicht-SOAP-Webservices
Auch einfache HTTP-Post-Requests ohne SOAP können vom Service ausgeführt werden. Dafür dürfen im Message Context die Variablen B3P_SOAP_SERVICE_NAME
und B3P_SOAP_ACTION
nicht vorkommen.
Fehlerbehandlung
Logging ausgaben finden sich im Attribut STACK_TRACE
des MessageContext. Durch setzen des Log-Levels (siehe GlobalProperties) können Request und Response im Rohformat geloggt werden.