Lebenszyklus von benutzerdefinierten Nachrichtenverarbeitungsknoten in Java

In diesem Abschnitt werden die verschiedenen Phasen im "Betriebsleben" eines benutzerdefinierten Nachrichtenverarbeitungsknotens für die Programmiersprache Java beschrieben. Hier werden die Objekte erläutert, die erstellt und gelöscht werden, sowie die Methoden und Klassen, die in den folgenden Phasen aufgerufen werden:

Die Hinweise in diesem Abschnitt gelten für Sendeknoten und für Nachrichtenverarbeitungsknoten. Beide Knotentypen können zusammen abgehandelt werden, da Letztere zwar typischerweise für die Nachrichtenverarbeitung verwendet werden, während Erstere eine Ausgabe (in Form eines Bitstroms) einer Nachricht zur Verfügung stellen, diese beiden Funktionen aber von beiden Knoten übernommen werden können.

Registrierung

Die Registrierungsphase setzt ein, wenn ein benutzerdefinierter Nachrichtenverarbeitungsknoten in Java sich im Broker "vorstellt" bzw. registriert.

Beim Start eines Brokers werden alle relevanten LILs und Java-Klassen geladen. Um sicherzustellen, dass ein Nachrichtenverarbeitungsknoten auch tatsächlich im Broker registriert ist, muss der Broker eine Klasse haben, die die Schnittstelle MbNodeInterface enthält und im Klassenpfad des Brokers steht.

Instanzerstellung

Ein benutzerdefinierter Nachrichtenverarbeitungsknoten in Java wird instanziert, wenn ein Broker einen Nachrichtenfluss mit einem benutzerdefinierten Nachrichtenverarbeitungsknoten einsetzt. Bei der Instanzerstellung wird der Konstruktor der Klasse des Nachrichtenverarbeitungsknotens aufgerufen.

Wenn ein Knoten instanziert wird und Sie irgendwelche Terminals spezifiziert haben, werden diese erzeugt. Ein Nachrichtenverarbeitungsknoten kann über beliebig viele Ein- und Ausgabeterminals verfügen. Sie müssen die Methoden createInputTerminal und createOutputTerminal in ihren Knoten-Konstruktor aufnehmen, um diese Terminals zu deklarieren.

Ausgabeterminals sind Out-, Failure- und Catch-Terminals. Mit der Klasse createOutputTerminal im Konstruktor der Knotenklasse können Sie alle erforderlichen Ausgabeterminals erstellen.

Als Minimum reicht es aus, wenn Sie diese Ausgabeterminals durch Verwendung Ihrer Konstruktorklasse erzeugen. Wenn allerdings Attributwerte initialisiert werden müssen, dann sollten Sie diesen Code an diesem Punkt in den Empfangsknoten einbetten.

Sollen Ausnahmebedingungen behandelt werden, die an den Nachrichtenverarbeitungsknoten zurückgegeben wurden, dann sollten Sie hierzu unter Verwendung der Methode createOutputTerminal ein Fehlerterminal für den Nachrichtenverarbeitungsknoten erstellen. Ein Fehlerterminal ist in diesem Fall sinnvoll, da WebSphere Message Broker Fehler an dieses Terminal weitergibt.

Stellen Sie sicher, dass alle vom Nachrichtenverarbeitungsknoten abgefangenen Ausnahmebedingungen richtig behandelt werden. Wenn Sie kein Fehlerterminal verwenden, wird der Nachrichtenverarbeitungsknoten keine Ausnahmebedingungsbehandlung vornehmen. Enthält der Nachrichtenfluss keine Methode für die Ausnahmebedingungsbehandlung, werden alle ausgelösten Ausnahmen an den Empfangsknoten zurückgegeben, wo der Empfangsknoten für die passende Reaktion sorgt.

Wenn Sie Ausnahmen abfangen, stellen Sie sicher, dass sie Ausnahmen, mit denen der Nachrichtenverarbeitungsknoten nichts anfangen kann, erneut ausgelöst werden. So wird die Ausnahme zur Behandlung wieder zurück an den Empfangsknoten gegeben, zum Beispiel dann, wenn Sie eine Transaktion rückgängig machen wollen.

Verarbeitung

Während der Verarbeitungsphase im Lebenszyklus eines benutzerdefinierten Nachrichtenverarbeitungsknotens übernimmt dieser die logische Hierarchie der Nachricht und verarbeitet sie.

Löschen

Benutzerdefinierte Nachrichtenverarbeitungsknoten in Java werden gelöscht, wenn der Knoten selbst gelöscht oder der Broker beendet wird. Sie müssen im Code nicht explizit angeben, dass der Knoten physisch gelöscht werden soll, da dies von der Bereinigungsfunktion (Garbage Collector) übernommen werden kann.

Wenn Sie jedoch benachrichtigt werden wollen, wenn die Löschung eines Knotens bevorsteht, können Sie die Methode onDelete verwenden. Dies könnten Sie etwa wollen, wenn es andere Ressourcen gibt, die Sie löschen möchten, als die, die der Garbage-Collection unterliegen. Wenn Sie beispielsweise einen Socket geöffnet haben, wird dieser nicht ordnungsgemäß geschlossen, wenn der Knoten automatisch gelöscht wird. Sie können diese Anweisung in Ihre onDelete-Methode aufnehmen, um sicher zu stellen, dass der Socket ordnungsgemäß geschlossen wird.

Bemerkungen | Marken | Downloads | Bibliothek | Unterstützung | Rückmeldung
Copyright IBM Corporation 1999, 2006 Letzte Aktualisierung: 23. Aug. 2006
as24999_