WebSphere Message Broker, Versión 8.0.0.5 Sistemas operativos: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte la información sobre la última versión del producto en IBM Integration Bus, Versión 9.0

Manejo de excepciones del nodo JavaCompute

El método evaluate() genera una MbException.

Si el código genera otras clases de excepciones comprobadas, deben captarse y volverse a generar como MbException. Normalmente, puede utilizarse la clase MbUserException, como se muestra en el código de ejemplo. MbUserException es una subclase de MbException y tiene un constructor público. Las funciones de programa de utilidad de WebSphere Message Broker pueden generar otras subclases de MbException que tienen constructores privados.

Para obtener información sobre qué sucede después de procesar el método evaluate(), consulte Manejo de errores predeterminado.

Las excepciones pueden producirse durante el proceso de flujos de mensajes (durante el método evaluate()) y durante el método onInitialize(). Si ha implementado el método onInitialize() y detecta un error irrecuperable en la configuración del nodo, se genera una excepción de clase MbException y el flujo no se inicializa. O bien el flujo no se puede desplegar, y se emite el mensaje de error BIP4157, o el flujo no se inicia y no aparece en la lista de flujos en ejecución.

No ejecute código en un método onInitialize() que dependa de otro recurso externo que quizás no esté allí porque el intermediario no reintenta las llamadas a ese método. Si tiene que inicializar una conexión externa, por ejemplo, inicialícela durante la primera llamada al método evaluate(). Si la inicialización no funciona, puede generar una excepción manejada como cualquier otra excepción.

El siguiente código de ejemplo muestra una implementación simple de un nodo JavaCompute que direcciona un mensaje CSV a los terminales out o alt, basándose en un campo de cabecera que contiene un número positivo o negativo. Si el texto del campo no es numérico, se genera una excepción NumberFormatException. El código de ejemplo muestra cómo se puede detectar y generar esta excepción como una excepción MbUserException, para que se pueda utilizar el manejo de MbException incorporado en WebSphere Message Broker desde nodos JavaCompute.

public void evaluate(MbMessageAssembly assembly) throws MbException {
  MbOutputTerminal out = getOutputTerminal("out");
  MbOutputTerminal alt = getOutputTerminal("alternate");
  
  MbMessage message = assembly.getMessage();
  int routeTo = 0;
  try {
    // ----------------------------------------------------------
    // Añadir código de usuario más abajo
    String routingValue = (String)message.evaluateXPath("string(/csv/header/route_to)");
    routeTo = Integer.parseInt(routingValue);
    
    
    // Fin de código de usuario
    // ----------------------------------------------------------
  } catch (java.lang.NumberFormatException e ) {
    // Ejemplo de manejo de excepciones
    MbUserException mbue = new MbUserException(this, "evaluate()", "","", e.toString(), null);
    throw mbue;
  }
  
  // Lo siguiente sólo se deberá cambiar
  // si no se propaga el mensaje al terminal 'out'
  if ( routeTo > 0 )
    out.propagate(assembly);
  else
    alt.propagate(assembly);
}
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Comentarios

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

        
        Última actualización:
        
        Última actualización: 2015-02-28 16:58:36


Tema de tareaTema de tarea | Versión 8.0.0.5 | ac30495_