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

Procesar datos de cuerpo de mensaje utilizando clases de objeto Java de JAXB

Utilice las clases de objeto JAXB generadas por un compilador de Arquitectura Java™ para enlaces XML (JAXB) utilizando la plantilla de clase JAXB.

Antes de empezar:
Puede utilizar la arquitectura Java para enlaces XML (JAXB) con un nodo JavaCompute para procesar los mensajes accediendo, creando y manipulando clases de objeto Java de JAXB generadas a partir de los archivos de esquema de modelo de mensaje.

Las clases de objeto Java de JAXB son una representación de objeto Java del mensaje y se pueden utilizar con la terminación de código Java. La plantilla Procesar a través de la clase JAXB del asistente Nueva clase de nodo JavaCompute genera código de plantilla para procesar los mensajes utilizando clases de objeto Java de JAXB. Si también ha utilizado el asistente Nueva clase de nodo JavaCompute para generar las clases de objeto Java de JAXB o para hacer referencia a las clases de objeto Java de JAXB existentes, es posible que el paso 1 se haya completado.

Para obtener más información sobre cómo utilizar JAXB en las soluciones de mensajería, consulte el ejemplo de Transformación JAXB de nodo JavaCompute.

Puede ver información sobre los ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit o el Information Center en línea. Puede ejecutar ejemplos sólo cuando utilice el Information Center que está integrado en WebSphere Message Broker Toolkit.

Para procesar datos de cuerpo de mensaje utilizando clases de objeto Java de JAXB, realice los pasos siguientes:

  1. Opcional: Modifique el método onInitialize () para hacer referencia al paquete o los paquetes que contienen las clases de enlace de objeto Java.
    	public void onInitialize() throws MbException {
    		try {
    			// TODO Actualizar la vía de acceso de contexto "com.example.jaxb" para que sea el paquete de las
    			// clases de objeto Java que han sido generadas por un compilador de enlace JAXB (Java
    			// Architecture for XML Binding - Arquitectura Java para enlaces XML)  
    			jxbcntxt = JAXBContext.newInstance("com.example.jaxb");

    Sustituya com.example.jaxb por el paquete de clases de enlaces de objeto Java de JAXB.

    Nota: Cuando se despliega o se reinicia el flujo de mensajes, el método onInitialize () sólo se llama una vez e inicializa el contexto JAXB para todas las hebras de proceso.

    Si la generación del contexto JAXB genera un error, el código que se proporciona en la plantilla "Procesar a través de la clase JAXB" genera una MbUserException y la operación de despliegue falla. Si la operación de despliegue falla, examine el mensaje de error que se graba en el registro de sucesos de sistema host para determinar la causa. La causa más probable es que uno o varios de nombres de paquete no se pueden resolver o que uno o varios de los paquetes que ha especificado no contienen las propiedades de enlaces o de fábrica de objetos JAXB necesarias.

  2. Modifique el método evaluate() para procesar cada mensaje que se pasa en un objeto MbMessageAssembly. El objeto MbMessageAssembly se define en la API de nodo definida por el usuario Java.
    1. La primera sección del método evaluate() extrae los datos de mensaje de la ensamblado, crea un ensamblado de salida y copia las cabeceras de mensaje. Para obtener más información, consulte Creación de un nodo de salida o de proceso de mensajes en Java.
      public void onInitialize() throws MbException {
      try {
      // TODO Actualizar la vía de acceso de contexto "com.example.jaxb" para que sea el paquete de las
      // clases de objeto Java que han sido generadas por un compilador de enlace JAXB (Java
      // Architecture for XML Binding - Arquitectura Java para enlaces XML)
      jaxbContext = JAXBContext.newInstance("com.example.jaxb");
      } catch (JAXBException e) {
      // Esta excepción hará que falle el despliegue de este nodo de cálculo Java
      // La causa típica es que el paquete JAXB anterior no está disponible
      MbUserException mbue = new MbUserException(this, "onInitialize()",
      "", "", e.toString(), null);
      throw mbue;
      }
      }
    2. La siguiente parte del método evaluate() desordena los datos de mensaje de entrada en el conjunto de objetos Java que están enlazados desde el esquema de mensaje. La desordenación crea una copia de modelo de objeto Java de los datos de mensaje que están en memoria.
      try {
      // desordenar los datos de mensaje de entrada del árbol de intermediario en las clases de objeto Java
      Object inMsgJavaObj = jaxbContext.createUnmarshaller().unmarshal(inMessage.getDOMDocument());
    3. En la siguiente parte del método evaluate() es donde se inserta el código JAXB propio para crear o actualizar el mensaje de salida procesando los datos de mensaje. Consulte los recursos externos para obtener detalles sobre cómo programar transformaciones utilizando clases de objeto Java de JAXB. Para obtener información sobre la depuración en Java, consulte Depurador Java.
      // ----------------------------------------------------------
      // Añadir código de usuario más abajo para crear los datos de salida nuevos actualizando
      // los objetos Java o creando objetos Java nuevos
      Object outMsgJavaObj = inMsgJavaObj;
      // Final de proceso de objeto Java de usuario
      // ----------------------------------------------------------
      El ejemplo siguiente muestra código JAXB que añade un registro a un mensaje CSV y establece el valor de los tres campos de dicho registro:
      // Ejemplo: añadir un registro de datos fijos
      CsvMsg outMsgJavaObj = (CsvMsg) inMsgJavaObj;
      Record additionalCsvRecord = new Record();
      additionalCsvRecord.setField1("Texto de mi nuevo campo 1");
      additionalCsvRecord.setField2("Texto de mi nuevo campo 2");
      additionalCsvRecord.setField3("Texto de mi nuevo campo 3");
      outMsgJavaObj.getRecord().add(additionalCsvRecord);
      // final de ejemplo
    4. La parte siguiente del método evaluate() vuelve a organizar en el árbol de mensajes de intermediario las clases de objeto Java procesadas. Modifique este código para pasar el objeto Java pertinente en lugar del valor predeterminado de plantilla. Si el código de transformación JAXB ha actualizado el mensaje de entrada, pase en el código de ordenación la clase de objeto Java que se ha creado durante la desordenación. Si está creando un mensaje de salida, pase en el código de ordenación la clase de objeto Java para el nuevo mensaje de salida. La plantilla establece el dominio de salida en XMLNSC; si necesita que el mensaje de salida esté en los dominios DFDL o SOAP, debe modificar este código.
      // PENDIENTE Establecer el domino de intermediario necesario para el mensaje de salida, p. ej. XMLNSC
      Document outDocument = outMessage.createDOMDocument(MbXMLNSC.PARSER_NAME);
      // organizar la clase de objeto Java de salida nueva o actualizada en el árbol de intermediario
      jaxbContext.createMarshaller().marshal(outMsgJavaObj, outDocument);
A continuación:
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:43


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