Vorbereitungen
WebSphere Message Broker stellt die Quelle für die zwei benutzerdefinierten Beispielknoten 'Umschaltungsknoten' und 'Umsetzungsknoten' bereit. Sie können diese Knoten in ihrem aktuellen Zustand verwenden, oder Sie können sie ändern.
Entwickeln Sie unter z/OS keine Java-Knoten, die auf einem Broker auf einer verteilten Plattform implementiert werden sollen, da die Java-Version unter z/OS möglicherweise keinen Code erzeugt, der mit der Java-Version auf der verteilten Plattform kompatibel ist.
Das Fenster 'Java Settings' (Java-Einstellungen) wird angezeigt.
Jede Klasse, die die Klasse MbInputNodeInterface implementiert und im Klassenpfad (oder LIL-Pfad) des Brokers enthalten ist, ist beim Broker als Empfangsknoten registriert. Wenn Sie die Klasse MbInputNodeInterface implementieren, müssen Sie auch eine run-Methode für diese Klasse implementieren. Die Methode run stellt den Start des Nachrichtenflusses dar, enthält die Daten, mit denen die Nachricht formuliert wird und gibt sie im Nachrichtenfluss weiter. Der Broker ruft die Methode run auf, wenn Threads entsprechend dem angegebenen Threading-Modell verfügbar sind.
Im Folgenden finden Sie ein Beispiel für die Deklaration der Empfangsknotenklasse:
package com.ibm.jplugins; import com.ibm.broker.plugin.*; public class BasicInputNode extends MbInputNode implements MbInputNodeInterface { ...
Wenn eine Instanz des Knotens erstellt wird, wird der Konstruktor der Knotenklasse des Benutzers aufgerufen. Hier erstellen Sie die Terminals des Knotens und initialisieren Standardwerte für die Attribute.
Einem Empfangsknoten sind eine Reihe von Ausgabeterminals zugeordnet, er verfügt jedoch normalerweise nicht über Eingabeterminals. Verwenden Sie die Methode createOutputTerminal, um einem Knoten Ausgabeterminals hinzuzufügen, wenn eine Instanz des Knotens erstellt wird. Im Folgenden finden Sie ein Beispiel für die Erstellung eines Knotens mit drei Ausgabeterminals:
public BasicInputNode() throws MbException { createOutputTerminal ("out"); createOutputTerminal ("failure"); createOutputTerminal ("catch"); setAttribute ("firstParserClassName","myParser"); attributeVariable = new String ("none"); }
Sie müssen den Namen des Knotens deklarieren, da er von der Workbench identifiziert wird. Alle Knotennamen müssen mit "Node" enden. Sie deklarieren den Namen mit der folgenden Methode:
public static String getNodeName() { return "BasicInputNode"; }
package com.ibm.pluginsamples; public class BasicInputNode extends MbInputNode implements MbInputNodeInterface { ...
Knotenattribute deklarieren Sie genauso wie Java-Bean-Eigenschaften. Sie müssen Getter- und Setter-Methoden für die Attribute schreiben, und das API-Framework leitet davon die Attributnamen mit Hilfe der Java-Bean-Introspektionsregeln ab. Wenn Sie beispielsweise die folgenden beiden Methoden deklarieren:
private String attributeVariable; public String getFirstAttribute() { return attributeVariable; } publc void setFirstAttribute(String value) { attributeVariable = value; }
Dann folgert der Broker daraus, dass dieser Knoten über ein Attribut mit dem Namen 'firstAttribute' verfügt. Dieser Name wird von den Namen der get- oder set-Methoden abgeleitet, nicht von internen Klassenmitgliedsvariablennamen. Attribute können nur als Zeichenfolgen angezeigt werden, deshalb müssen Sie numerische Typen in den get- oder set-Methoden in bzw. aus Zeichenfolgen konvertieren. Die folgende Methode definiert beispielsweise ein Attribut mit dem Namen 'timeInSeconds':
int seconds; public String getTimeInSeconds() { return Integer.toString(seconds); } public void setTimeInSeconds(String value) { seconds = Integer.parseInt(value); }
Wie bereits beschrieben wird die Methode run vom Broker aufgerufen, um die Eingabenachricht zu erstellen. Diese Methode sollte alle Verarbeitungsfunktionen für den Empfangsknoten bereitstellen.
Eine Empfangsknotenimplementierung bestimmt normalerweise, welcher Nachrichten-Parser eine Eingabenachricht anfangs analysiert. Der primitive MQEmpfangsknoten gibt beispielsweise vor, dass für die Syntaxanalyse des MQMD-Headers ein MQMD-Parser erforderlich ist. Ein benutzerdefinierter Empfangsknoten kann einen geeigneten Header oder Nachrichten-Parser und den Modus, in dem die Syntaxanalyse gesteuert wird, mit Hilfe der folgenden Attribute auswählen, die standardmäßig enthalten sind und die Sie überschreiben können:
Die Methode onDelete wird wie folgt implementiert:
public void onDelete() { // perform node cleanup if necessary }