Codierungstipps für die Programmierung von Mediationen
Programmierungshinweise, die Ihnen beim Schreiben von Mediationscode helfen.
- Eliminieren Sie das Risiko von Endlosschleifen im Routing-Pfad. Wenn Sie also ein Ziel im Pfad festlegen, die mit dem aktuellen Ziel identisch ist, wird die Nachricht endlos weitergeleitet, weil der Routing-Pfad ständig auf das aktuelle Ziel zurückgesetzt wird. Das Mediationsframework sucht nicht nach Schleifen in Routing-Pfaden.
- Vermeiden Sie die Verwendung statischer Felder, da eine Mediation so implementiert werden kann, dass mehrere Nachrichten parallel verarbeitet werden.
- Vermeiden Sie das Zwischenspeichern von aus Nachrichtenkontexten oder Nachrichteninhalten berechneten Informationen. da sich diese Informationen mit jeder Nachricht ändern können. Ausgenommen hiervon sind Werte, die ausschließlich von den Eigenschaften des Mediationshandlers abgeleitet werden. Diese werden aus Leistungsgründen zwischengespeichert.
- Die Programmierung von Mediationen unterliegt denselben Einschränkungen wie die Programmierung einer EJB. Nähere Informationen zu den Einschränkungen finden Sie im Abschnitt 18.1.2 der Spezifikation EJB 1.1.
- Wählen Sie die gewünschte Transaktionssteuerungsstufe für Ihre Mediation aus. Eine Mediation, die beispielsweise Felder in einer Nachricht bearbeitet, hat wahrscheinlich keine Auswirkungen auf die Transaktionssteuerung. Wenn Ihre Mediation jedoch Datenbankfelder aktualisiert, ist eine Transaktionssteuerung erforderlich, und Sie sollten Ihren Administrator unbedingt auffordern, das Flag "UseGlobalTransaction" in der Mediationsdefinition zu setzen. Die Standardeinstellung für dieses Flag ist false.
- Spezielle Hinweise zum Nachrichtenformat:
- Es empfiehlt sich zu prüfen, ob die Nachricht nach dem Anwenden der Mediationsfunktion immer noch das erwartete Format hat. Sie sollten mit der Methode der Schnittstelle "SIMessage" prüfen, ob alle Werte der Nachrichteneigenschaften serialisiert werden können und ob der Datengraph der Nachricht dem Format der Nachricht entspricht.
- Abhängig davon, wie die Nachricht verarbeitet werden soll, können Sie das gewünschte Format angeben, anstatt das natürliche Format zu akzeptieren. Wenn Sie eine SOAP-Nachricht beispielsweise als Bytefolge bearbeiten möchten, geben Sie mit der Methode "getNewDataGraph" der Schnittstelle "SIMessage" das Format JMS/bytes an. Die Methode "getNewDataGraph" gibt einen neuen SDO-Datengraphen zurück, der eine Kopie der SIMessage-Nutzdaten in Baumdarstellung enthält, die im Feld "Format" hier mit Bytefolge angegeben wurde.
- Es empfiehlt sich, das Nachrichtenformat im Mediationscode zu überprüfen, weil eine Mediation Nachrichten mit unerwartetem Format wahrscheinlich nicht verarbeiten kann. Verwenden Sie hierfür die Methode "getFormat" der Schnittstelle "SIMessage".
- Die einzige Version von SDO, die von Mediationen unterstützt wird, ist Version 1.
- Aufgrund einer Einschränkung in der SDO-Benutzerschnittstelle für die Nachricht haben die verschiedenen Nachrichtenzugriffsmethoden
keine Klausel "throws". Deshalb muss eine Ausnahme, die von einer Zugriffsmethode
wegen eines Syntaxanalysefehlers ausgelöst wird, eine Ausnahme des Typs "unchecked" (nicht geprüft) sein.
Ihre Mediation kann Syntaxanalyseausnahmen jedoch abfangen, indem sie die
Ausnahmeklasse SIMessageParseException im Paket com.ibm.websphere.sib.exception verwendet.
Verwenden Sie Code wie im folgenden Beispiel:
try { // Funktion mit SDO-Nachrichtenzugriff } catch (SIMessageParseException e) { // Eigentliche Ursache für die Laufzeitausnahme suchen und behandeln // Wahrscheinlich handelt es sich um einen Syntaxanalysefehler Throwable cause = e.getCause(); }
Anmerkung: Falls die Mediation die SIMessageParseException nicht abfängt, wird die ursprüngliche Version der Nachricht an das Ausnahmeziel gesendet. - Verwenden Sie beim Implementieren der Mediation beschreibende und leicht zu merkende Namen für den Handler und die Handlerliste.
- Wenn Sie genau eine Mediation für genau ein Ziel implementieren, verwenden Sie in der Administrationskonsole denselben Namen für Ihren Mediationshandler, die Mediationshandlerliste und das Mediationsobjekt.
- Zur Verbesserung der Leistung können Sie Selektorregeln angeben, damit nur der erforderliche Teil der Nachrichten, die ein Ziel durchlaufen, vermittelt werden.