Legacy-Integration: SOAP, Batch, DB & File
Neue Enterprise-Java-Systeme müssen oft mit alten Systemen kommunizieren, ohne deren Modellfehler zu übernehmen.
Prinzip
Legacy-Integration braucht eine Schutzschicht. Die neue Domain darf nicht direkt WSDL-Namen, Stored-Procedure-Parameter oder alte Statuscodes übernehmen.
SOAP
Bei SOAP ist Contract-First wichtig: WSDL, XSD, Bindings und Prozessschritte werden dokumentiert. Der Adapter übersetzt SOAP-Fehler in fachliche Fehler.
public final class LegacyBillingMapper { // Pattern: Anti-Corruption Layer
LegacyInvoiceRequest toLegacyRequest(OrderId orderId, Money total) {
LegacyInvoiceRequest request = new LegacyInvoiceRequest();
request.setExternalOrderNo(orderId.value());
request.setAmountInCent(total.amount().movePointRight(2).longValueExact());
request.setCurrency(total.currency().getCurrencyCode());
return request;
}
}
Batch
Batch eignet sich für große Mengen, Wiederanlauf, fachliche Kontrollpunkte und Nachtverarbeitung. Moderne Batchjobs sollten idempotent und beobachtbar sein.
DB
Direkter Legacy-DB-Zugriff ist riskant. Besser sind stabile Views, APIs oder klar dokumentierte Stored Procedures mit Tests.
File
Dateischnittstellen brauchen Schema, Zeichensatz, Zeilenformat, Fehlerdatei, Reprocessing und Archivierung.
Mapping
| Legacy-Feld | Neues Modell | Regel |
|---|---|---|
| CUST_NR | CustomerId | Null/Leer ablehnen |
| ORD_STAT=7 | OrderStatus.CANCELLED | Mapping dokumentieren |
| AMT_CENT | Money | Currency verpflichtend |
| ERR_CD | DomainError | Technische Codes nicht durchreichen |