corner imagecorner image
IDEPlatformPluginsDocs & SupportCommunityPartners

Vinculando WSDL a Java com JAXB

A arquitetura Java para API de vinculação XML (JAXB) facilita o acesso aos documentos XML a partir de aplicativos escritos na linguagem de programação Java. O JAXB é uma alternativa ao uso de analisador SAX ou DOM para acessar os dados em um documento XML. Ao acessar um documento XML com JAXB, primeiro vincule o esquema do documento XML em um conjunto de classes Java que representem o esquema. Em seguida, desserialize o documento XML. A desserialização de um documento é a criação de uma árvore de objetos de conteúdo que representam o conteúdo e a organização do documento.

Também é possível usar um JAXB para construir um documento XML. Para construir um documento XML com JAXB, primeiro vincule o esquema do documento XML a ser construído. Depois, crie uma árvore de conteúdo. Por último, serialize a árvore de conteúdo em um documento XML.

O diagrama a seguir, da arquitetura Java para XML vinculando API, mostra os processos para acessar e construir documentos XML a partir de aplicativos Java.

Diagrama do processo JABX para acessar ou criar XML a partir de java

Este tutorial mostra a compatibilidade das ferramentas do NetBeans IDE para JAXB. Neste tutorial, você aprenderá três conceitos específicos:

  • Como usar um assistente no IDE para vincular o esquema de um documento XML e desserializar o documento em um conjunto de classes Java que represente o esquema.
  • Como usar a classe gerada em JAXB no código do aplicativo.
  • Como desserializar o código Java num documento de Esquema XML.

Para obter informações detalhadas sobre a arquitetura JAXB, e sobre JAXB como um todo, consulte o Chapter 2: Binding between XML Schema and Java Classes and Chapter 3: Using JAXB in The Java Web Services Tutorial.

Conteúdo

O conteúdo desta página se aplica ao NetBeans IDE 6.7 e versões posteriores

Para seguir este tutorial, você precisa dos seguintes recursos e softwares.

Software ou recurso Versão necessária
NetBeans IDE Pacote de download do Java EE
Java Development Kit (JDK) versão 7 ou versão 6
Aviso: O NetBeans IDE 6.9 requer o JDK 6
O arquivo WSDL usado neste tutorial CreditReportSimple.wsdl

O Tomcat e o servidor GlassFish podem ser instalados com a distribuição Web e Java EE do NetBeans IDE. Como alternativa, você pode visitar a página de download do servidor GlassFish ou a página de download do Apache Tomcat.

Gerando objetos Java a partir de documentos XML

O objetivo deste exercício é criar um projeto e gerar objetos Java a partir de um documento XML.

  1. Baixe CreditReportSimple.wsdl e salve-o num local de sua escolha.
  2. Escolha Arquivo > Novo projeto. Em Categorias, selecione Java. Em Projetos, selecione Aplicação Java e clique em Próximo.
  3. Em Nome do projeto, indique JseSimpleClientReport e clique em Terminar. Na janela Projetos, o projeto JseSimpleClientReport aparece.
  4. Na janela Projetos, clique com o botão direito do mouse no nó JseSimpleClientReport e escolha Novo > Outro > XML > Vinculação JAXB. Em seguida, clique em Próximo. O assistente para Nova vinculação JAXB aparece.
    Assistente para JAXB

    As configurações no assistente acima servem para as seguintes finalidades:

    • Nome da vinculação. Especifica o nome da nova vinculação JAXB, que será usada para identificá-la.
    • Projeto. Exibe o nome do projeto atual.
    • Arquivo do esquema. O arquivo com o qual você deseja trabalhar pode estar disponível localmente ou on-line.
    • Tipo de esquema. São compatíveis as seguintes linguagens de Esquema XML:
      • Esquema XML
      • Relax NG - uma linguagem simples de Esquema XML. Sintaxe XML
      • Relax NG Compact - uma linguagem simples de Esquema XML. Sintaxe não XML
      • XML DTD - a alternativa mais antiga para Esquema XML
      • WSDL - Web Service Definition Language (linguagem de definição de serviço Web). Linguagem de Esquema XML para a definição de serviços Web com base em SOAP.
    • Nome do pacote. Especifica o nome do pacote onde os objetos Java serão gerados.
    • Opções do compilador. Muitas opções do compilador estão disponíveis, como descrito aqui no Tutorial do Java EE 5. Entretanto, em relação ao assistente para JAXB, somente as opções seguintes são relevantes e você pode defini-las usando caixas de verificação no assistente:
      • nv. Não realize validação estrita do(s) esquema(s) de entrada. Por padrão, a validação estrita do esquema do código-fonte é realizada antes do processamento. Observe que isso não significa que o compilador de vinculação não realizará qualquer validação; isso simplesmente quer dizer que ele realizará uma validação menos estrita.
      • readOnly. Força o compilador a marcar os códigos-fonte Java gerados como somente-leitura. Por padrão, o compilador não protege contra gravação os arquivos de código-fonte Java que ele gera.
      • npa. Suppress the generation of package level annotations into **/package-info.java. Usar esta opção faz com que o código gerado internalize essas anotações em outras classes geradas.
      • verboso. Produz a saída máxima do compilador, tais como informações de progresso e avisos.
      • silencioso. Elimina a saída do compilador, tais como informações de progresso e avisos.
    • Usar extensão. Por padrão, o compilador reforça estritamente as regras abordadas no capítulo Compatibilidade da Especificação JAXB. No modo padrão (estrito), você também está limitado a usar somente as personalizações de vinculação definidas na especificação. Usando esta opção, você será permitido a usar as extensões de fornecedor JAXB.
    • Usar arquivo de vinculação. Permite que você importe e edite um ou mais arquivos de personalização JAXB.
    • Usar arquivo de catálogo. Permite que você importe e edite arquivos de catálogo OASIS.
  5. Digite CreditReport no Nome da vinculação.
  6. Em Arquivo do esquema, selecione Selecionar do sistema de arquivos local. Clique em Navegar e vá para o arquivo WSDL que foi baixado no início deste tutorial.
  7. Na lista suspensa Tipo do esquema, selecione WSDL (a não ser que o IDE o tenha escolhido automaticamente).

    Nota: poderá aparecer um aviso dizendo que o suporte a esquema WSDL é somente experimental e que é necessário utilizar a opção -wsdl para ativá-lo. Ignore este aviso.

  8. Em Nome do pacote, digite org.netbeans.j2ee.wsdl.creditreport. Em seguida, deverá ser exibido: Assistente JAXB preenchido
  9. Clique em Terminar.

O IDE gera os objetos Java a partir do documento XML fornecido. Na próxima seção, examinamos os objetos Java no IDE.

Examinando a saída do assitente JAXB

O objetivo deste exercício é nos familiarizarmos com as ferramentas do NetBeans IDE para trabalhar com a saída do assistente JAXB.

  1. Como em outros artefatos que o IDE gera novamente sempre que um projeto é construído, os objetos Java são gerados na pasta build. Abra a janela Arquivos e vá para a localização dos objetos Java gerados. Esses objetos Java também são exibidos na janela projetos, sob o nó Códigos-fonte gerados.
    Visualizações Projetos e Arquivos mostrando objetos Java gerados
  2. A janela Projetos também exibe um novo nó que contém o arquivo WSDL, como mostrado abaixo. Observe que você pode clicar com o botão direito do mouse no nó CreditReport e, em seguida, o assistente reabre e é possível alterar as configurações especificadas anteriormente.
    Menu de contexto Relatório de crédito mostrando a opção Alterar opções de JAXB
  3. Presumindo que você tenha alterado as configurações no assistente, é possível gerar novamente os objetos Java, como indicado abaixo:
    Menu de contexto Vinculação JAXB mostrando a opcão Gerar código Java novamente

  4. Clique com o botão direito do mouse no arquivo WSDL e escolha Abrir. O documento é aberto no editor.

Agora que você sabe o que o IDE gerou para seu documento XML, usaremos algumas das ferramentas que observamos para fazer algo significativo com nossos objetos Java gerados.

Serializando código java em um Esquema XML

O objetivo deste exercício é fazer algo significativo com os arquivos e o código que o IDE gerou para você. Definem-se alguns valores em um dos objetos Java gerados e depois serializa-se o objeto em um documento de Esquema XML exibido na janela de saída do IDE.

  1. Abra a classe principal que o assistente de Novo aplicativo Java gerou. Por padrão, essa classe recebe o nome do projeto — JseSimpleClientReport.java. Declare CreditReport, que é uma das classes JAXB raiz geradas, no corpo do método principal:
    public static void main(String[] args) {
    CreditReport cr = new CreditReport();
    }
  2. Um ícone de aviso aparece. Passe o mouse sobre ele e uma dica de ferramenta será aberta dizendo que o IDE não pode encontrar a classe CreditReport. Clique no ícone de aviso e selecione a opção para que o IDE adicione a instrução de importação.
  3. No corpo do método principal, digite 'cr.' O IDE fornece o recurso autocompletar de código relevante para seus artefatos JAXB (em alguns sistemas, poderá ser necessário pressionar Ctrl-Espaço):
    Opções de auto-completar de código
  4. Defina alguns valores para a classe JAXB, como os seguintes (Adicione uma instrução de importação para java.math.BigInteger):
        cr.setFirstName("Butros Butros");
    cr.setLastName("Gali");
    cr.setDob("1930/05/30");
    cr.setScore("900");
    cr.setSsn("123-45-6789");

    cr.setLatestAddress1("2500 Some Ave");
    cr.setLatestAddress2("Suite 5000");
    cr.setCity("New York");
    cr.setState("New York");
    cr.setCountry("USA");
    cr.setPostalCode("NY 12345-6789");

    cr.setCurrency("USD");
    cr.setLiability(BigInteger.valueOf(2000000));
    cr.setLiquidAssests(BigInteger.valueOf(3000000));
    cr.setImmovableAssests(BigInteger.valueOf(5000000));
  5. No corpo do método principal, abaixo dos valores que foram inseridos, digite 'jaxbm'. Essas letras significam “JAXB Marshalling”. Agora você deve ver o seguinte:
    Trecho de código no editor mostrando jaxbm sublinhado em vermelho

    Aparece um sublinhado vermelho porque os caracteres que você digitou não formam uma palavra que seja parte da linguagem de programação Java. Em vez disso, essas letras formam um modelo de código do NetBeans, que usaremos na próxima etapa.

    O NetBeans também oferece um modelo de código para desserialização do JAXB. Sua abreviação é “'jaxbu”.

  6. Pressione a tecla 'Tab'.

    Os caracteres 'jaxbm' se expandem e um trecho de código aparece:

    try {
    javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());
    javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();
    marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N
    marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
    marshaller.marshal(cr, System.out);
    } catch (javax.xml.bind.JAXBException ex) {
    // XXXTODO Handle exception
    java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N
    }

    Aviso: A expansão do modelo de código é muito sensível. Não é possível adicionar um espaço e, em seguida, pressionar Tab ou digitar a frase incorretamente, corrigi-la e, em seguida, pressionar Tab, etc. É necessário somente digitar a frase corretamente e, em seguida, pressionar Tab. Se cometer um erro de digitação, exclua a frase que começou a digitar e digite a frase inteira.

  7. Execute o projeto (clique com o botão direito do mouse no nó do projeto e selecione Executar). A janela Saída exibe o seguinte:
    Saída do relatório do cliente


Veja também

Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicativos Java EE, consulte os seguintes recursos:

Para enviar comentários e sugestões, obter suporte e se manter informado sobre os mais recentes desenvolvimentos dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .