WebSphere Message Broker, Versão 8.0.0.5 Sistemas operacionais: AIX, HP-Itanium, Linux, Solaris, Windows, z/OS

Consulte as informações sobre a versão mais recente do produto em IBM Integration Bus, Versão 9.0

Processando Dados do Corpo da Mensagem Usando Classes de Objeto JAXB Java

Use as classes JAXB geradas por um compilador Java™ Architecture for XML Binding (JAXB) usando o modelo de classe JAXB.

Antes de começar:
É possível usar o Java Architecture for XML Binding (JAXB) com um nó JavaCompute para processar suas mensagens acessando, criando e manipulando classes de objetos Java JAXB que você gera a partir de seus arquivos de esquema de modelo de mensagem.

As classes de objetos Java JAXB são uma representação de objeto Java de sua mensagem e podem ser usadas com a conclusão do código Java. O modelo Processar via Classe JAXB no assistente Nova Classe de Nó de Cálculo Java gera código de modelo para processar suas mensagens usando classes de objetos Java JAXB. Se você usou também o assistente Nova Classe de Nó de Cálculo Java para gerar suas classes de objetos Java JAXB ou para fazer referência às classes de objeto Java JAXB existentes, a etapa 1 deverá ser concluída para você.

Para obter informações adicionais sobre como usar JAXB em suas soluções do sistema de mensagens, consulte a amostra JavaCompute.

Você só pode visualizar informações sobre amostras quando usa o centro de informações que está integrado ao WebSphere Message Broker Toolkit ou o centro de informações on-line. Você só poderá executar amostras quando usar o centro de informações que está integrado ao WebSphere Message Broker Toolkit.

Para processar dados do corpo da mensagem usando classes de objetos Java JAXB, conclua as etapas a seguir:

  1. Opcional: Modifique o método onInitialize () para referenciar o pacote ou pacotes que contêm as classes de ligação de objeto Java.
    	public void onInitialize() throws MbException {
    		try {
    			// TODO Update context path "com.example.jaxb" to be the package of your
    			// Java object classes that were generated by a Java Architecture for XML
    			// Binding (JAXB) binding compiler  
    			jxbcntxt = JAXBContext.newInstance("com.example.jaxb");

    Substitua com.example.jaxb por seu pacote de classes de ligações de objetos Java JAXB.

    Nota: Quando você implementa ou reinicia seu fluxo de mensagens, o método onInitialize () é chamado somente uma vez e inicializa o contexto JAXB para todos os encadeamentos de processamento.

    Se um erro for lançado pela geração do contexto JAXB, o código fornecido no modelo "Processar via Classe JAXB" lançará uma MbUserException e a operação de implementação falhará. Se a operação de implementação falhar, inspecione a mensagem de erro gravada no log de eventos do sistema host para determinar a causa. A causa mais provável é que um ou mais nomes de pacotes não podem ser resolvidos ou um ou mais dos pacotes especificados não contêm as propriedades requeridas de factory ou de ligações de objetos JAXB.

  2. Modifique o método evaluate() para processar cada mensagem passada em um objeto MbMessageAssembly. O objeto MbMessageAssembly está definido na API do nó definido pelo usuário Java.
    1. A primeira seção do método evaluate() extrai os dados da mensagem do conjunto, cria um conjunto de saída e copia cabeçalhos da mensagem. Para obter informações adicionais, consulte Criando um Nó de Processamento ou Saída de Mensagem em Java.
      public void onInitialize() throws MbException {
      try {
      // TODO Update context path "com.example.jaxb" to be the package of your
      // Java object classes that were generated by a Java Architecture for XML
      // Binding (JAXB) binding compiler
      jaxbContext = JAXBContext.newInstance("com.example.jaxb");
      } catch (JAXBException e) {
      // This exception will cause the deploy of this Java compute node to fail
      // Typical cause is the JAXB package above is not available
      MbUserException mbue = new MbUserException(this, "onInitialize()",
      "", "", e.toString(), null);
      throw mbue;
      }
      }
    2. A próxima parte no método evaluate() desserializa os dados da mensagem de entrada no conjunto de objetos Java que são ligados a partir do esquema de mensagem. A desserialização cria uma cópia do modelo de objeto Java dos dados da mensagem que estão na memória.
      try {
      // unmarshal the input message data from the Broker tree into your Java object classes
      Object inMsgJavaObj = jaxbContext.createUnmarshaller().unmarshal(inMessage.getDOMDocument());
    3. A próxima parte do método evaluate() é onde você insere seu próprio código JAXB para criar ou atualizar a mensagem de saída pelo processamento dos dados da mensagem. Consulte recursos externos para obter detalhes sobre como programar transformações usando classes de objetos Java JAXB. Para obter informações sobre depuração em Java, consulte Depurador Java.
      // ----------------------------------------------------------
      // Add user code below to build the new output data by updating
      // your Java objects or building new Java objects
      Object outMsgJavaObj = inMsgJavaObj;
      // End of user Java object processing
      // ----------------------------------------------------------
      O exemplo a seguir mostra um código JAXB que inclui um registro em uma mensagem CSV e configura o valor dos três campos nesse registro:
      // Example: add a record of fixed data
      CsvMsg outMsgJavaObj = (CsvMsg) inMsgJavaObj;
      Record additionalCsvRecord = new Record();
      additionalCsvRecord.setField1("My new field 1 text");
      additionalCsvRecord.setField2("My new field 2 text");
      additionalCsvRecord.setField3("My new field 3 text");
      outMsgJavaObj.getRecord().add(additionalCsvRecord);
      // end example
    4. A próxima parte no método evaluate() serializa as classes de objetos Java processadas de volta para a árvore de mensagens do Broker. Modifique esse código para passar o objeto Java relevante no lugar do padrão do modelo. Se seu código de transformação JAXB atualizou a mensagem de entrada, passe a classe de objeto Java que foi criada durante a desserialização no código de serialização. Se você estiver criando uma mensagem de saída, passe a classe de objeto Java para sua nova mensagem de saída no código de serialização. O modelo configura o domínio de saída como XMLNSC; se for necessário que a mensagem de saída esteja nos domínios DFDL ou SOAP, você deverá modificar este código.
      // TODO set the required Broker domain to for the output message, eg XMLNSC
      Document outDocument = outMessage.createDOMDocument(MbXMLNSC.PARSER_NAME);
      // marshal the new or updated output Java object class into the Broker tree
      jaxbContext.createMarshaller().marshal(outMsgJavaObj, outDocument);
A seguir:
Avisos | Marcas Registradas | Downloads | Biblioteca | Suporte | Feedback

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

        
        Última atualização:
        
        Última atualização: 2015-02-28 18:28:41


Tópico de TarefaTópico de Tarefa | Versão 8.0.0.5 | ac49011_