Legacy-Integration: SOAP, Batch, DB & File

Neue Enterprise-Java-Systeme müssen oft mit alten Systemen kommunizieren, ohne deren Modellfehler zu übernehmen.

SOAPBatchStored ProceduresACL
Anti-Corruption Layer für Legacy-Integration
Anti-Corruption Layer für Legacy-Integration

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.

Mapping statt Legacy-Sprache in der Domain
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-FeldNeues ModellRegel
CUST_NRCustomerIdNull/Leer ablehnen
ORD_STAT=7OrderStatus.CANCELLEDMapping dokumentieren
AMT_CENTMoneyCurrency verpflichtend
ERR_CDDomainErrorTechnische Codes nicht durchreichen
⌂ Cockpit