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. Este documento mostra como o NetBeans IDE fornece suporte à ferramenta para JAXB, principalmente por meio de um assistente que transforma vários tipos de documentos XML em classes Java. Começando com um determinado arquivo WSDL, geraremos classes Java e depois faremos algo com elas.

Neste tutorial, você aprenderá duas coisas específicas:

  • Como usar um assistente no IDE para vincular o esquema de um documento XML a um conjunto de classes Java que representa o esquema.
  • Como usar uma variedade de ferramentas fornecidas pelo IDE para usar de forma rápida e eficiente as classes Java geradas.

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 6.8

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

Software ou recurso Versão necessária
NetBeans IDE Pacote de download Java
Java Development Kit (JDK) versão 6 ou versão 5
Atenção: o NetBeans IDE 6.9 requer o JDK 6
Servidor da aplicação ou Web compatível com Java EE Servidor Web Tomcat 7.0 e/ou
GlassFish Server Open Source Edition
O arquivo WSDL usado neste tutorialCreditReportSimple.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. Escolha Arquivo > Novo projeto. Em Categorias, selecione Java. Em Projetos, selecione Aplicação Java e clique em Próximo.
  2. Em Nome do projeto, indique JseSimpleClientReport e clique em Terminar. Na janela Projetos, o projeto JseSimpleClientReport aparece.
  3. 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. Os tipos seguintes de documento XML são suportados:
      • Esquema XML
      • Relax NG
      • Relax NG Compact
      • XML DTD
      • WSDL
    • 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.
  4. Digite CreditReport no Nome da vinculação.
  5. 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.
  6. Na lista suspensa Tipo do esquema, selecione WSDL (a não ser que o IDE o tenha escolhido automaticamente). Agora você deve ver o seguinte:

    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.

    Assistente para JAXB preenchido
  7. 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. A partir do NetBeans IDE 6.7, 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

    Observe também que o assistente colocou as bibliotecas JAXB no classpath do aplicativo para JDK 5. Para JDK 6, o próprio JDK fornece as bibliotecas JAXB, portanto, nenhum novo nó é adicionado ao nó Bibliotecas.

  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.

Usando os objetos Java

O objetivo deste exercício é fazer algo significativo com os arquivos e o código que o IDE gerou para você. Você definirá alguns valores em um dos objetos Java gerados e, em seguida, serializará a janela Saída do IDE.

  1. Abra a classe Main que o assistente para Novo aplicativo Java gerou para você. 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. Um modelo de código relacionado é 'jaxbu', que significa 'JAXB Unmarshalling'.

  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 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 dos recursos de desenvolvimento de Java EE do NetBeans IDE, inscreva-se na lista de endereçamento de .