WebSphere Message Broker Version 8.0.0.5 Betriebssysteme: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Sehen Sie sich die Informationen zur aktuellen Produktversion im IBM Integration Bus Version 9.0 an.

Ausnahmebedingungsbehandlung durch den JavaCompute-Knoten

Die Methode evaluate() löst eine Ausnahmebedingung der Klasse MbException aus.

Wenn Ihr Code andere Klassen geprüfter Ausnahmen auslöst, müssen sie abgefangen und als Klasse MbException wieder ausgelöst werden. Normalerweise verwenden Sie die Klasse MbUserException, wie im Beispielcode gezeigt. MbUserException ist eine Unterklasse der Klasse MbException und besitzt einen öffentlichen Konstruktor. Die Dienstprogrammfunktionen von WebSphere Message Broker können andere Unterklassen von 'MbException' mit privaten Konstruktoren auslösen.

Informationen zu den weiteren Abläufen nach Verarbeitung der Methode evaluate() finden Sie im Abschnitt Standardfehlerbehandlung.

Ausnahmebedingungen können während der Nachrichtenflussverarbeitung (während der Methode evaluate()) und während der Methode onInitialize() auftreten. Wenn Sie die Methode onInitialize() implementiert haben und in der Knotenkonfiguration einen nicht behebbaren Fehler feststellen, wird eine Ausnahmebedingung der Klasse MbException ausgegeben und der Nachrichtenfluss kann nicht initialisiert werden. Der Nachrichtenfluss kann entweder nicht implementiert werden und die FehlernachrichtBIP4157 wird ausgegeben oder der Nachrichtenfluss kann nicht gestartet werden und ist damit auch nicht in der Liste der aktiven Nachrichtenflüsse enthalten.

In der Methode onInitialize() sollte kein Code ausgeführt werden, der von einer anderen externen Ressource abhängig ist, die unter Umständen nicht vorhanden ist, da der Broker diese Methode nicht noch einmal aufruft. Muss eine externe Verbindung initialisiert werden, sollten Sie sie beispielsweise während des ersten Aufrufs der Methode evaluate() initialisieren. Ist keine Initialisierung möglich, können Sie eine Ausnahmebedingung auslösen, die wie jede andere Ausnahmebedingung im Nachrichtenfluss verarbeitet wird.

Der folgende Beispielcode zeigt eine einfache Implementierung eines JavaCompute-Knotens, der abhängig von einem Headerfeld, das eine positive oder negative Zahl enthält, eine CSV-Nachricht an die out- oder alt-Terminals weiterleitet. Wenn der Text im Feld nicht numerisch ist, wird die Ausnahme NumberFormatException ausgelöst. Der Beispielcode zeigt, wie diese Ausnahme abgefangen und als Ausnahme MbUserException ausgelöst werden kann, sodass die Behandlung von MbException, die in WebSphere Message Broker von JavaCompute-Knoten integriert ist, verwendet werden kann.

public void evaluate(MbMessageAssembly assembly) throws MbException {
  MbOutputTerminal out = getOutputTerminal("out");
  MbOutputTerminal alt = getOutputTerminal("alternate");
  
  MbMessage message = assembly.getMessage();
  int routeTo = 0;
  try {
    // ----------------------------------------------------------
    // Benutzercode unten hinzufügen
    String routingValue = (String)message.evaluateXPath("string(/csv/header/route_to)");
    routeTo = Integer.parseInt(routingValue);
    
    
    // Ende von Benutzercode
    // ----------------------------------------------------------
  } catch (java.lang.NumberFormatException e ) {
    // Beispiel Ausnahmebehandlung
    MbUserException mbue = new MbUserException(this, "evaluate()", "","", e.toString(), null);
    throw mbue;
  }
  
  // Die folgenden Angaben sollten nur geändert werden,
  // wenn Nachricht nicht an das Ausgabeterminal weitergegeben wird
  if ( routeTo > 0 )
    out.propagate(assembly);
  ELSE
    alt.propagate(assembly);
}
Bemerkungen | Marken | Downloads | Bibliothek | Support | Feedback

Copyright IBM Corporation 1999, 2014Copyright IBM Corporation 1999, 2014.

        
        Letzte Aktualisierung:
        
        Letzte Aktualisierung: 2015-02-28 16:20:10


TaskthemaTaskthema | Version 8.0.0.5 | ac30495_