Vinculando WSDL a Java com JAXB

A Arquitetura Java para API de Vinculação XML (JAXB) facilita o acesso aos documentos XML com base em aplicações escritas na linguagem de programação Java. O JAXB é uma alternativa ao uso de parser SAX ou DOM para acessar os dados em um documento XML. Quando você acessar um documento XML com JAXB, primeiro vincule o esquema do documento XML em um conjunto de classes Java que representa o esquema. Em seguida, desempacote o documento XML. O desempacotamento de um documento é a criação de uma árvore de objetos de conteúdo que representa o conteúdo e a organização do documento.

Você também pode usar JAXB para construir um documento XML. Para construir um documento XML com JAXB, primeiro vincule o esquema do documento XML que deseja construir. Depois, crie uma árvore de conteúdo. Por último, empacote a árvore de conteúdo em um documento XML.

O diagrama a seguir, da Arquitetura Java para API de Vinculação de XML, mostra os processos para acessar e construir documentos XML com base em aplicações Java.

Diagrama que mostra o processo JAXB para acessar ou criar XML com base em Java

Este tutorial mostra o suporte de 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 desempacotar o documento em um conjunto de classes Java que representa o esquema.
  • Como usar a classe gerada por JAXB no código da aplicação.
  • Como desempacotar o código Java em um documento de Esquema XML.

Para obter informações detalhadas sobre a arquitetura JAXB, e sobre o JAXB como um todo, consulte o Capítulo 2: Vinculando entre o Esquema XML e Classes Java e o Capítulo 3: Usando JAXB no Tutorial do Java Web Services.

Conteúdo

O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4

Para seguir este tutorial, são necessários os recursos e o software a seguir.

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

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

Gerando Objetos Java com Base em Documentos XML

O objetivo deste exercício é criar um projeto e gerar objetos Java com base em um documento XML.

  1. Faça download de CreditReportSimple.wsdl e salve-o em um 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, digite JseSimpleClientReport e clique em Finalizar. Na janela Projetos, o projeto JseSimpleClientReport será exibido.
  4. Na janela Projetos, clique com o botão direito do mouse no nó JseSimpleClientReport e selecione Novo > Outro > XML > Vinculação JAXB. Em seguida, clique em Próximo. O assistente Nova Vinculação JAXB será exibido
    Assistente do JAXB

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

    • Nome de Associação Especifica o nome da nova vinculação JAXB, que será usado para identificá-la.
    • Projeto. Exibe o nome do projeto atual.
    • Arquivo de Esquema O arquivo com o qual você deseja trabalhar pode estar disponível localmente ou on-line.
    • Tipo de Esquema. As linguagens de Esquema XML a seguir são suportadas:
      • 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 ao Esquema XML
      • WSDL - Web Service Definition Language (Linguagem de Definição de Web Service). Linguagem de Esquema XML para a definição de Web services com base em SOAP.
    • Nome do Pacote. Especifica o pacote para o qual os objetos Java serão gerados.
    • Opções do Compilador. Muitas opções do compilador estão disponíveis, conforme descrito aqui no Tutorial do Java EE 7. Entretanto, em relação ao Assistente do JAXB, somente as opções a seguir são relevantes e você pode defini-las usando caixas de seleção no assistente:
      • nv. Não execute validação estrita do esquema de entrada. Por default, 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á nenhuma validação; isso simplesmente quer dizer que ele realizará uma validação menos estrita.
      • readOnly. Force o compilador a marcar os códigos-fonte Java gerados como somente para leitura. Por default, o compilador não protege contra gravação os arquivos de código-fonte Java que ele gera.
      • npa. Suprima a geração de anotações de nível de pacote em **/package-info.java. Usar esta opção faz com que o código gerado internalize essas anotações em outras classes geradas.
      • detalhada. Produza saída máxima do compilador, como informações de progresso e advertências.
      • quieta. Suprima a saída do compilador, como informações de progresso e advertências.
    • Usar Extensão. Por default, o compilador aplica, de maneira estrita, as regras descritas no capítulo Compatibilidade da Especificação JAXB. No modo default (estrito), você também está limitado a usar somente as personalizações de vinculação definidas na especificação. Usando essa opção, você terá permissão de usar as Extensões de Fornecedor JAXB.
    • Usar Arquivo de Associação. Permite importar e editar um ou mais arquivos de personalização de associação do JAXB.
    • Usar Arquivo de Catálogo. Permite importar e editar arquivos de catálogo OASIS.
  5. Digite CreditReport no Nome da Associação.
  6. Em Arquivo do Esquema, marque Selecionar do Sistema de Arquivos Local. Clique em Navegar e vá para o arquivo WSDL do qual fez download no início deste tutorial.
  7. Na lista drop-down Tipo do Esquema, selecione WSDL (a não ser que o IDE o tenha selecionado automaticamente).

    Observação: poderá aparecer uma advertência dizendo que o suporte a Esquema WSDL é somente experimental e que é necessário utilizar a opção -wsdl para ativá-lo. Ignore esta advertência.

  8. Em Nome do Pacote, Digite org.netbeans.j2ee.wsdl.creditreport. Agora você deve ver o seguinte: Assistente do JAXB Preenchido
  9. Clique em Finalizar.

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 Assistente do JAXB

O objetivo deste exercício é nos familiarizarmos com as ferramentas do NetBeans IDE para trabalhar com a saída do assistente do 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 construir. 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, no nó Códigos-Fonte gerados.
    Views Projetos e Arquivos que mostram 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 será reaberto e você poderá alterar as definições especificadas anteriormente.
    Menu de contexto de relatório de crédito que mostra a opção Alterar Opções do JAXB
  3. Presumindo que você tenha alterado as definições no assistente, você poderá gerar novamente os objetos Java, como indicado abaixo:
    Menu de contexto Vinculação do JAXB que mostra a opção Gerar Código Novamente Código Java

  4. Clique com o botão direito do mouse no arquivo WSDL e selecione Abrir. O documento será aberto no editor.

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

Empacotando 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ê. Você define alguns valores em um dos objetos Java gerados e depois empacota o objeto em um documento de Esquema XML exibido na janela de Saída do IDE.

  1. Abra a classe principal que o assistente Nova Aplicação Java gerou para você. Por default, 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 advertência será exibido. Passe o mouse sobre ele e uma dica de ferramenta será aberta informando que o IDE não pode localizar a classe CreditReport. Clique no ícone de advertência com o botão esquerdo do mouse 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 a funcionalidade autocompletar código relevante para seus artefatos JAXB (em alguns sistemas, poderá ser necessário pressionar Ctrl-Espaço):
    Opções da funcionalidade autocompletar 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” (Empacotamento de JAXB). Agora você deverá ver o seguinte:
    Snippet no editor que mostra o 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 fornece um modelo de código para desempacotamento do JAXB. Sua abreviação é “'jaxbu”.

  6. Pressione a tecla "Tab".

    Os caracteres "jaxbm" se expandem e um snippet de código será exibido:

    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
    }

    Advertência: A expansão do modelo de código é muito sensível. Você não pode adicionar um espaço e, em seguida, pressionar tab ou digitar a expressão incorretamente, corrigi-la e, em seguida, pressionar tab, etc. É necessário somente digitar a expressão corretamente e, em seguida, pressionar tab. Se cometer um erro de digitação, delete a expressão que começou a digitar e digite a expressão inteira.

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


Consulte Também

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

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

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2015, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo