Übertragung des ARM Correlator lokal

Den Correlator lokal zu übertragen heißt, dass man ihn zwischen verschiedenen Handlern, aber nur auf Seiten des Clients oder aber nur auf Seiten des Servers, übertragen möchte. Der erste Ansatz, der nach der vorherigen Betrachtung realistisch erscheint ist, den Correlator lokal auch über den erweiterten SOAP Header zu übertragen. Das hätte zum Vorteil das man ein und denselben Handler verwenden kann. Dieser schaut jeweils im Header nach einem Correlator und legt denjenigen der aktuellen ARM Transaktion wiederum dort ab. Es ist jedoch nicht einsichtig, jedesmal den Correlator base64 zu codieren und zu decodieren sowie das SOAP Headerelement jedes mal zu entfernen und neu hinzuzufügen. Einen deutlich besseren Ansatz stellt die Übertragung des Correlator als Property im MessageContext Objekt dar. Diese Lösung hat den Vorteil, dass man weder die SOAP Nachricht manipulieren noch das man immer den Correlator base64 codieren und decodieren muss. Als Nachteil muß lediglich gesehen werden, dass man dazu nicht mehr denselben Handler für alles verwenden kann auf Seiten des Clients. Das liegt darin begründet, das man im Handler nicht feststellen kann, ob man der letzte Handler ist oder nicht. Man braucht also einen Handler extra, der auf Client Seite als letzter Handler eingeklinkt wird und dafür zuständig ist, den SOAP Header zu erweitern. Die Handler, die vor diesem kommen, brauchen somit keine Manipulationen an der SOAP Nachricht vornehmen. Dies stellt einen nicht unerheblichen Performancevorteil dar bei einer größeren Anzahl von Handlern.
Thomas Termin 2005-02-24