Creación de un nodo de proceso de mensajes o de salida en Java

Antes de empezar

WebSphere Message Broker proporciona el origen de dos nodos de ejemplo definidos por el usuario denominados SwitchNode y TransformNode. Puede utilizar estos nodos en su estado actual o puede modificarlos.

Conceptualmente, un nodo de proceso de mensajes se utiliza para procesar un mensaje de algún modo y un nodo de salida se utiliza para producir un mensaje como una corriente de bits. Sin embargo, cuando se codifica un nodo de proceso de mensajes o un nodo de salida, éstos son esencialmente lo mismo. Puede realizar el proceso de mensajes en un nodo de salida y, del mismo modo, puede producir un mensaje en una corriente de bits utilizando un nodo de proceso de mensajes. Aunque, para una mayor sencillez, este tema hace referencia principalmente al nodo como nodo de proceso de mensajes, describe la funcionalidad de ambos tipos de nodo.

Creación de un proyecto Java nuevo

Puede crear nodos Java desde el área de trabajo, utilizando el entorno de desarrollo de plug-in (PDE) proporcionado. Para realizar esta tarea, deberá crear un proyecto Java nuevo, como se indica a continuación:
  1. Conmute a la Perspectiva de Desarrollo de plug-in.
  2. Pulse Archivo > Nuevo > Proyecto. Seleccione Java en el menú de la izquierda y, a continuación, seleccione Proyecto Java en el menú de la derecha.
  3. Déle un nombre al proyecto.

    Se visualiza el panel Valores Java.

  4. Seleccione el separador Bibliotecas y pulse Añadir JAR externos.
  5. Seleccione dir_instalación\classes\jplugin2.jar.
  6. Siga las solicitudes de los demás separadores para definir otros valores de creación.
  7. Pulse Finalizar.
Entonces puede desarrollar el origen del nodo Java en este proyecto.

Declaración de la clase de nodo de proceso de mensajes

Cualquier clase que implemente MbNodeInterface y esté contenido en la vía de acceso de clase (o vía de acceso de LIL) del intermediario se registra en el intermediario como un nodo de proceso de mensajes. Cuando implemente MbNodeInterface, también deberá implementar un método de evaluación para esta clase. El intermediario invoca el método de evaluación para cada mensaje que pasa a través del flujo.

Por ejemplo, para declarar la clase de nodo de proceso de mensajes:
package com.ibm.jplugins;

import com.ibm.broker.plugin.*;

public class BasicNode extends MbNode implements MbNodeInterface
Puede realizar esta tarea en el área de trabajo como se indica a continuación:
  1. Pulse Archivo > Nuevo > Clase.
  2. Establezca los campos de nombre de paquete y clase en los valores apropiados.
  3. Suprima el texto del campo de texto de superclase y pulse el botón Examinar
  4. Seleccione MbNode y pulse Aceptar.
  5. Pulse el botón Añadir situado junto al campo de texto de interfaces y seleccione MbNodeInterface.
  6. Pulse Finalizar.

Definición del constructor de nodos

Cuando se crea una instancia del nodo, se invoca el constructor de la clase de nodo del usuario. Aquí es donde creará los terminales del nodo e inicializará los valores por omisión para los atributos.

Un nodo de proceso de mensajes tiene asociados varios terminales de entrada y terminales de salida. Para añadir terminales a un nodo cuando se crea una instancia del nodo, se utilizan los métodos createInputTerminal y createOutputTerminal. Por ejemplo, para crear un nodo con un terminal de entrada y dos terminales de salida:

public MyNode() throws MbException
{
		// crear terminales aquí
		createInputTerminal ("in");
		createOutputTerminal ("out");
		createOutputTerminal ("failure");
}

Declaración del nombre de nodo

Necesita declarar el nombre del nodo tal como lo identificará el área de trabajo. Todos los nombres de nodo deben terminar por "Node". Declare el nombre utilizando el método siguiente:

public static String getNodeName()
{
   return "BasicNode";
}
Si no se declara este método, la infraestructura de API Java crea un nombre de nodo por omisión utilizando las normas siguientes:
  • El nombre de clase se añade el nombre de paquete.
  • Los puntos se eliminan y la primera letra de cada parte del nombre de paquete y clase se escriben en mayúsculas.
Por ejemplo, por omisión se asigna a la clase siguiente el nombre de nodo "ComIbmPluginsamplesBasicNode":
package com.ibm.pluginsamples;
public class BasicNode extends MbNode implements MbNodeInterface
{
   ...

Declaración de atributos

Declare los atributos de nodo del mismo modo que las propiedades de bean Java. Es responsable de escribir los métodos getter y setter para los atributos y la infraestructura de API deducirá los nombres de atributo utilizando las normas de introspección de bean Java. Por ejemplo, si declara los dos métodos siguientes:

private String attributeVariable;

public String getFirstAttribute()
{
  return attributeVariable;
}

publc void setFirstAttribute(String value)
{
  attributeVariable = value;
}

El intermediario deduce que este nodo tiene un atributo denominado firstAttribute. Este nombre se deriva de los nombres de los métodos get o set, no de los nombres de variables de miembros de clase internos. Dado que los atributos sólo se puede exponer como series de caracteres, los tipos numéricos se deben convertir a las series de caracteres o de las series de caracteres en los métodos get o set. Por ejemplo, el método siguiente define un atributo denominado timeInSeconds:

int seconds;

public String getTimeInSeconds()
{
  return Integer.toString(seconds);
}

public void setTimeInSeconds(String value)
{
  seconds = Integer.parseInt(value);
}

Implementación de la funcionalidad de nodo

Tal como se ha descrito anteriormente, para los nodos de proceso de mensajes o de salida debe implementar el método de evaluación, definido en MbNodeInterface. El intermediario lo invoca para procesar el mensaje. Este método debe proporcionar la función de proceso completa para el nodo.

El método de evaluación tiene dos parámetros que entra el intermediario:
  1. MbMessageAssembly, que contiene los objetos siguientes a los que se accede utilizando los métodos apropiados:
    • El mensaje de entrada
    • El entorno local
    • El entorno global
    • La lista de excepciones
  2. El terminal de entrada en el que ha llegado el mensaje.

Los datos de flujo de mensajes, es decir el mensaje, el entorno global, el entorno local y la lista de excepciones, se reciben en el terminal de entrada del nodo.

Supresión de una instancia del nodo

Se suprime una instancia del nodo cuando se realiza una de las acciones siguientes:
  • Se concluye el intermediario.
  • Se elimina el nodo o el flujo de mensajes que contiene el nodo y se vuelve a desplegar la configuración.
Durante la supresión de nodo, es posible que el nodo desee que se le informe a fin de poder realizar las operaciones de limpieza, por ejemplo cerrar los sockets. Si el nodo implementa el método onDelete opcional, el intermediario invoca este método justo antes de que se suprima el nodo.

Implemente el método onDelete como se indica a continuación:

public void onDelete()
{
  // realizar limpieza de nodo si es necesario
}
Avisos | Marcas registradas | Descargas | Biblioteca | Soporte | Su opinión
Copyright IBM Corporation 1999, 2005 Última actualización: 11/11/2005
as09970_