blob: 89ef291d7af3a31ad7ea9e0326bda46fae36d052 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head>
<link rel="stylesheet" href="../../../print.css" type="text/css" media="print"><title>Vinculando WSDL a Java com JAXB - NetBeans IDE</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="KEYWORDS" content="NETBEANS, TUTORIAL, GUIDE, USER, DOCUMENTATION, WEB SERVICE, WEB SERVICES, SOAP, METRO, WSDL, JAVA, JAXB, JAX-WS">
<meta name="description" content="This tutorial shows how to use NetBeans IDE 7.0-7.4
to work with Java Architecture for XML Binding (JAXB) to generate Java classes based on XML documents.">
<link rel="stylesheet" href="../../../netbeans.css"></head><body>
<h1>Vinculando WSDL a Java com JAXB</h1>
<p>A <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html" target="_blank">Arquitetura Java para API de Vinculação XML</a> (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 <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#binsch" target="_blank"> <em>vincule</em> o esquema</a> do documento XML em um conjunto de classes Java que representa o esquema. Em seguida, <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#unmars" target="_blank"> <em>desempacote</em> o documento XML</a>. 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.</p>
<p>Você também pode usar JAXB para construir um documento XML. Para construir um documento XML com JAXB, primeiro <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#binsch2" target="_blank">vincule o esquema</a> do documento XML que deseja construir. Depois, <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#crtree" target="_blank">crie uma árvore de conteúdo</a>. Por último,<em> <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#mars">empacote</a> a árvore de conteúdo</em> em um documento XML.</p>
<p>O diagrama a seguir, da <a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html" target="_blank">Arquitetura Java para API de Vinculação de XML</a>, mostra os processos para acessar e construir documentos XML com base em aplicações Java.</p>
<p><img alt="Diagrama que mostra o processo JAXB para acessar ou criar XML com base em Java" src="../../../images_www/articles/72/websvc/jaxb/xml_schema_fig1.PNG" style="width: 450px; height: 300px;"><br>
</p>
<p>Este tutorial mostra o suporte de ferramentas do NetBeans IDE para JAXB. Neste tutorial, você aprenderá três conceitos específicos: </p>
<ul>
<li>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. </li>
<li>Como usar a classe gerada por JAXB no código da aplicação.</li>
<li>Como desempacotar o código Java em um documento de Esquema XML. </li>
</ul>
<p>Para obter informações detalhadas sobre a arquitetura JAXB, e sobre o JAXB como um todo, consulte o <a href="http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBWorks.html#wp100322" target="_blank">Capítulo 2: Vinculando entre o Esquema XML e Classes Java</a> e o <a href="http://download.oracle.com/docs/cd/E17802_01/webservices/webservices/docs/2.0/tutorial/doc/JAXBUsing.html#wp78319" target="_blank">Capítulo 3: Usando JAXB</a> no <a href="http://java.sun.com/webservices/docs/2.0/tutorial/doc/" target="_blank">Tutorial do Java Web Services</a>. </p>
<p><b>Conteúdo</b></p>
<img alt="O conteúdo desta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4" class="stamp" src="../../../images_www/articles/72/netbeans-stamp-74-73-72.png" title="O conteúdo nesta página se aplica ao NetBeans IDE 7.2, 7.3 e 7.4">
<ul>
<li><a href="#Exercise_1"> Gerando Objetos Java com Base em Documentos XML</a></li>
<li><a href="#Exercise_2"> Examinando a Saída do Assistente do JAXB</a></li>
<li><a href="#Exercise_3">Empacotando Código Java em um Documento de Esquema XML</a></li>
</ul>
<p><b>Para seguir este tutorial, são necessários os recursos e o software a seguir.</b></p>
<table>
<tbody>
<tr>
<th class="tblheader" scope="col">Software ou Recurso</th>
<th class="tblheader" scope="col">Versão Necessária</th>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.netbeans.org/downloads/index.html">NetBeans IDE</a></td>
<td class="tbltd1"> Pacote de download do Java EE </td>
</tr>
<tr>
<td class="tbltd1"><a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">JDK (Java Development Kit)</a> </td>
<td class="tbltd1">versão 7 ou versão 6</td>
</tr>
<tr>
<td class="tbltd1">O arquivo WSDL usado neste tutorial</td>
<td><a href="http://www.netbeans.org/files/documents/4/2518/CreditReportSimple.wsdl">CreditReportSimple.wsdl</a></td>
</tr>
</tbody>
</table>
<p class="notes">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 <a href="https://glassfish.java.net/download.html">página de downloads do GlassFish Server</a> ou a <a href="http://tomcat.apache.org/download-60.cgi">página de downloads do Apache Tomcat</a>.</p>
<!-- ===================================================================================== -->
<h2><a name="Exercise_1"></a><!--Exercise 1: --> Gerando Objetos Java com Base em Documentos XML</h2>
<p>O objetivo deste exercício é criar um projeto e gerar objetos Java com base em um documento XML.</p>
<ol>
<li>Faça download de <a href="http://www.netbeans.org/files/documents/4/2518/CreditReportSimple.wsdl" target="_blank">CreditReportSimple.wsdl</a> e salve-o em um local de sua escolha.<br>
</li>
<li>Escolha Arquivo > Novo Projeto. Em Categorias, selecione Java. Em Projetos, selecione Aplicação Java e clique em Próximo.</li>
<li>Em Nome do Projeto, digite <tt>JseSimpleClientReport</tt> e clique em Finalizar. Na janela Projetos, o projeto JseSimpleClientReport será exibido.</li>
<li>Na janela Projetos, clique com o botão direito do mouse no nó <tt>JseSimpleClientReport</tt> e selecione Novo > Outro > XML > Vinculação JAXB. Em seguida, clique em Próximo. O assistente Nova Vinculação JAXB será exibido <br> <img alt="Assistente do JAXB" border="1" class="margin-around" height="519" src="../../../images_www/articles/72/websvc/jaxb/jaxb-wiz-1.png" width="600">
<p>As definições no assistente acima servem para as seguintes finalidades:</p>
<ul>
<li><b>Nome de Associação</b> Especifica o nome da nova vinculação JAXB, que será usado para identificá-la.</li>
<li><b>Projeto.</b> Exibe o nome do projeto atual.</li>
<li><b>Arquivo de Esquema</b> O arquivo com o qual você deseja trabalhar pode estar disponível localmente ou on-line.</li>
<li><b>Tipo de Esquema.</b> As linguagens de Esquema XML a seguir são suportadas:
<ul>
<li><a href="http://www.w3.org/XML/Schema" target="_blank"><b>Esquema XML</b></a></li>
<li><a href="http://relaxng.org/" target="_blank"><b>Relax NG</b></a> - uma linguagem simples de Esquema XML. Sintaxe XML </li>
<li><a href="http://relaxng.org/" target="_blank"><b>Relax NG Compact</b></a> - uma linguagem simples de Esquema XML. Sintaxe não XML</li>
<li><b>XML DTD - </b>a alternativa mais antiga ao Esquema XML<br></li>
<li><b><a href="http://www.w3.org/TR/wsdl" style="font-weight: bold;">WSDL</a> - </b>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.<br>
</li>
</ul>
</li>
<li><b>Nome do Pacote.</b> Especifica o pacote para o qual os objetos Java serão gerados.</li>
<li><b>Opções do Compilador.</b> Muitas opções do compilador estão disponíveis, conforme descrito <a href="http://docs.oracle.com/javaee/7/tutorial/doc/">aqui</a> 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:
<ul>
<li><b>nv.</b> 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á <i>nenhuma</i> validação; isso simplesmente quer dizer que ele realizará uma validação menos estrita.</li>
<li><b>readOnly.</b> 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.</li>
<li><b>npa.</b> Suprima a geração de anotações de nível de pacote em <tt>**/package-info.java</tt>. Usar esta opção faz com que o código gerado internalize essas anotações em outras classes geradas.</li>
<li><b>detalhada.</b> Produza saída máxima do compilador, como informações de progresso e advertências.</li>
<li><b>quieta.</b> Suprima a saída do compilador, como informações de progresso e advertências.</li>
</ul>
</li>
<li><b>Usar Extensão.</b> 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.</li>
<li><b>Usar Arquivo de Associação.</b> Permite importar e editar um ou mais arquivos de personalização de associação do JAXB.</li>
<li><b>Usar Arquivo de Catálogo.</b> Permite importar e editar arquivos de catálogo OASIS.</li>
</ul>
</li>
<li>Digite <tt>CreditReport</tt> no Nome da Associação.</li>
<li>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.</li>
<li>Na lista drop-down Tipo do Esquema, selecione WSDL (a não ser que o IDE o tenha selecionado automaticamente).
<p class="alert"><strong>Observação: </strong>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.</p></li>
<li>Em Nome do Pacote, Digite <tt>org.netbeans.j2ee.wsdl.creditreport</tt>. Agora você deve ver o seguinte: <img alt="Assistente do JAXB Preenchido" border="1" class="margin-around" height="531" src="../../../images_www/articles/72/websvc/jaxb/jaxb-wiz-2.png" title="Assistente do JAXB Preenchido" width="600"></li>
<li>Clique em Finalizar.</li>
</ol>
<p>O IDE gera os objetos Java a partir do documento XML fornecido. Na próxima seção, examinamos os objetos Java no IDE. </p>
<h2><a name="Exercise_2"></a> Examinando a Saída do Assistente do JAXB</h2>
<p>O objetivo deste exercício é nos familiarizarmos com as ferramentas do NetBeans IDE para trabalhar com a saída do assistente do JAXB.</p>
<ol>
<li>Como em outros artefatos que o IDE gera novamente sempre que um projeto é construído, os objetos Java são gerados na pasta <tt>construir</tt>. 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.<br> <img alt="Views Projetos e Arquivos que mostram objetos Java gerados" border="1" class="margin-around" height="552" src="../../../images_www/articles/72/websvc/jaxb/gen-src.png" title="View Projetos que mostra objetos Java gerados" width="328"></li>
<li>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. <br> <img alt="Menu de contexto de relatório de crédito que mostra a opção Alterar Opções do JAXB" class="margin-around" height="209" src="../../../images_www/articles/72/websvc/jaxb/change-jaxb-options.png" title="Menu de contexto de relatório de crédito que mostra a opção Alterar Opções do JAXB" width="325">
</li>
<li>
<p>Presumindo que você tenha alterado as definições no assistente, você poderá gerar novamente os objetos Java, como indicado abaixo: <br> <img alt="Menu de contexto Vinculação do JAXB que mostra a opção Gerar Código Novamente Código Java" class="margin-around" height="209" src="../../../images_www/articles/72/websvc/jaxb/regen-code.png" title="Menu de contexto Vinculação do JAXB que mostra a opção Gerar Código Novamente Código Java" width="325"></p>
</li>
<li>Clique com o botão direito do mouse no arquivo WSDL e selecione Abrir. O documento será aberto no editor. <br>
</li>
</ol>
<p>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.<!-- ===================================================================================== -->
</p>
<h2><a name="Exercise_1"></a><!--Exercise 2: --> Empacotando Código Java em um Esquema XML </h2>
<p>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.</p>
<ol>
<li>Abra a classe principal que o assistente Nova Aplicação Java gerou para você. Por default, essa classe recebe o nome do projeto — <tt>JseSimpleClientReport.java</tt>. Declare <tt>CreditReport</tt>, que é uma das classes JAXB raiz geradas, no corpo do método <tt>principal</tt>:
<pre class="examplecode">public static void main(String[] args) {<br> CreditReport cr = new CreditReport(); <br>}</pre>
</li>
<li>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 <tt>CreditReport</tt>. 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.</li>
<li>No corpo do método <tt>principal</tt>, 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): <br> <img alt="Opções da funcionalidade autocompletar código" border="1" class="margin-around" height="332" src="../../../images_www/articles/72/websvc/jaxb/jaxb-codecompletion.png" title="Opções da funcionalidade autocompletar código" width="447"></li>
<li>Defina alguns valores para a classe JAXB, como os seguintes (Adicione uma instrução de importação para <tt>java.math.BigInteger</tt>):
<pre class="examplecode"> cr.setFirstName("Butros Butros");<br> cr.setLastName("Gali");<br> cr.setDob("1930/05/30");<br> cr.setScore("900");<br> cr.setSsn("123-45-6789");<br><br> cr.setLatestAddress1("2500 Some Ave");<br> cr.setLatestAddress2("Suite 5000");<br> cr.setCity("New York");<br> cr.setState("New York");<br> cr.setCountry("USA");<br> cr.setPostalCode("NY 12345-6789");<br><br> cr.setCurrency("USD");<br> cr.setLiability(BigInteger.valueOf(2000000));<br> cr.setLiquidAssests(BigInteger.valueOf(3000000));<br> cr.setImmovableAssests(BigInteger.valueOf(5000000));<br> </pre>
</li>
<li>No corpo do método <tt>principal</tt>, abaixo dos valores que foram inseridos, digite "jaxbm". Essas letras significam “<a href="http://www.oracle.com/technetwork/articles/javase/index-140168.html#mars" target="_blank">JAXB Marshalling</a>” (Empacotamento de JAXB). Agora você deverá ver o seguinte: <br> <img alt="Snippet no editor que mostra o jaxbm sublinhado em vermelho" border="1" class="margin-around" height="171" src="../../../images_www/articles/72/websvc/jaxb/jaxb-template.png" title="Snippet no editor que mostra o jaxbm sublinhado em vermelho" width="546">
<p>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.</p> <p class="notes">O NetBeans também fornece um modelo de código para desempacotamento do JAXB. Sua abreviação é “'jaxbu”.</p>
</li>
<li>Pressione a tecla "Tab".
<p>Os caracteres "jaxbm" se expandem e um snippet de código será exibido:</p>
<pre class="examplecode">try {<br> javax.xml.bind.JAXBContext jaxbCtx = javax.xml.bind.JAXBContext.newInstance(cr.getClass().getPackage().getName());<br> javax.xml.bind.Marshaller marshaller = jaxbCtx.createMarshaller();<br> marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_ENCODING, "UTF-8"); //NOI18N<br> marshaller.setProperty(javax.xml.bind.Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);<br> marshaller.marshal(cr, System.out);<br>} catch (javax.xml.bind.JAXBException ex) {<br> // XXXTODO Handle exception<br> java.util.logging.Logger.getLogger("global").log(java.util.logging.Level.SEVERE, null, ex); //NOI18N<br>}</pre>
<p class="alert"><b>Advertência:</b> 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. </p>
</li>
<li>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: <br> <img alt="Saída do relatório do cliente" border="1" class="margin-around" height="321" src="../../../images_www/articles/72/websvc/jaxb/jaxb-output.png" title="Saída do relatório do cliente" width="577"></li>
</ol>
<br>
<div class="feedback-box"><a href="/about/contact_form.html?to=3&amp;subject=Feedback:%20JAXB%20Wizard%20in%20NetBeans%20IDE">Envie-nos Seu Feedback</a></div>
<br style="clear: both;">
<!-- ======================================================================================= -->
<h2><a name="seealso"></a>Consulte Também</h2>
<p>Para obter mais informações sobre o uso do NetBeans IDE para desenvolver aplicações Java EE, consulte os seguintes recursos: </p>
<ul>
<li><a href="../../docs/websvc/jax-ws.html">Introdução aos Web Services JAX-WS</a></li>
<li><a href="../../docs/websvc/client.html">Desenvolvendo Clientes de Web Service JAX-WS</a></li>
<li><a href="../../docs/websvc/rest.html">Introdução ao RESTful Web Services</a></li>
<li><a href="../../docs/websvc/wsit.html">Interoperabilidade Avançada de Web Service</a></li>
<li><a href="../../trails/web.html">Trilha do Aprendizado de Web services</a></li>
</ul>
<p>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, <a href="../../../community/lists/top.html">inscreva-se na lista de correio nbj2ee@netbeans.org</a>.</p>
</body></html>