SOAP Contract-First & Portal-Integration
WSDL, XSD, Binding, Process, SOAP Faults und Fassade vor Altsystemen.
Version 3IntegrationCodeDiagramm
In dieser Datei
Warum SOAP wichtig bleibt
In Banken, Versicherungen, Behörden und B2B-Landschaften ist SOAP oft weiterhin produktiv. Verträge, XSD-Typen und WS-* Erweiterungen sind in solchen Umgebungen kein Zufall, sondern Stabilitätsfaktor.
Contract-first statt Java-first
Der Vertrag soll bewusst versioniert und fachlich geprüft werden. Java-Code wird gegen WSDL/XSD gebaut, nicht zufällig zum öffentlichen Vertrag.
Portal kommuniziert über Fassade
Ein Portal sollte Altsystemdetails nicht direkt kennen. Eine Fassade übersetzt Fehler, Datenformate und Sicherheitskontext.
Entscheidungen
| Entscheidung | Gute Praxis | Prüffrage |
|---|---|---|
| Fachliche Grenze | Zuerst Use Case, Invariante und Verantwortlichkeit klären. | Welche Geschäftsentscheidung wird geschützt? |
| Technische Grenze | Framework-/Library-Code hinter Port, Adapter oder Konfiguration kapseln. | Kann die Domain ohne Framework getestet werden? |
| Betrieb | Timeouts, Logs, Metriken, Traces, Security und Rollback definieren. | Wie erkennt der Betrieb Fehler rechtzeitig? |
Ausführliche Beispiele
XSD Ausschnitt
<xs:complexType name="PlaceOrderRequest">
<xs:sequence>
<xs:element name="customerNumber" type="xs:string" />
<xs:element name="orderLine" type="tns:OrderLine" minOccurs="1" maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
SOAP Adapter als Port-Implementierung
public final class SoapBillingAdapter implements BillingPort {
private final BillingSoapClient client;
// Pattern: Adapter - SOAP-Vertrag bleibt außerhalb des Use Case.
public InvoiceId createInvoice(Order order) {
CreateInvoiceResponse response = client.createInvoice(SoapMapper.toRequest(order));
return new InvoiceId(response.getInvoiceNumber());
}
}
Typische Stolperfallen
| Stolperfalle | Warum gefährlich |
|---|---|
| WSDL driftet durch Java-Code | Kleine Codeänderung wird Breaking Change. |
| Faults unstrukturiert | Clients können Fehler nicht zuverlässig auswerten. |
| Portal kennt Legacy-Codes | Modernisierung wird später blockiert. |