Desenvolvendo um Cliente JAX-WS de um Arquivo WSDL

O conjunto de ferramentas da Java™ API for XML-Based Web Services (JAX-WS) suporta a geração de artefatos Java que você precisa para desenvolver clientes de serviços da Web JAX-WS estáticos ao iniciar com um arquivo Web Services Description Language (WSDL).

Antes de Iniciar

Quando você usa uma abordagem de desenvolvimento descendente para desenvolver serviços da Web JAX-WS iniciando com um arquivo WSDL, você deve obter a Uniform Resource Locator (URL) para o arquivo WSDL.

[Windows][z/OS]Se o arquivo WSDL for um arquivo local, a URL será semelhante a este exemplo: file:drive:\path\file_name.wsdl.

[Linux][AIX][HP-UX][Solaris][IBM i]Se o arquivo WSDL for um arquivo local, a URL será semelhante a este exemplo: file:/path/file_name.wsdl.

Você também pode especificar os arquivos locais utilizando o caminho do sistema de arquivos absoluto ou relativo.

Sobre Esta Tarefa

O modelo de programação de cliente estático para JAX-WS é chamado de cliente de proxy dinâmico. O cliente de proxy dinâmico chama um serviço da Web baseado em uma interface de terminal em serviço que é fornecida. Depois de criar o proxy, o aplicativo cliente pode chamar métodos nesse proxy como uma implementação padrão dessas interfaces. Para clientes de serviço da Web JAX-WS usando o modelo de programação proxy dinâmico, use a ferramenta JAX-WS, wsimport, para processar um arquivo WSDL e gerar artefatos Java portáteis que são usados para criar um cliente de serviço da Web. Crie os seguintes artefatos Java portáteis utilizando a ferramenta wsimport:
  • SEI (Service Endpoint Interface)
  • Classe de Serviço
  • Classe de exceção que é mapeada a partir da classe wsdl:fault (se houver uma)
  • O JAXB (Java Architecture for XML Binding) gerou valores de tipo que são classes Java mapeadas a partir dos tipos de esquema XML
Configurações suportadas Configurações suportadas: As ferramentas de linha de comandos wsimport, wsgen, schemagen e xjc não são suportadas na plataforma z/OS. Essa funcionalidade é permitida pelas ferramentas de montagem fornecidas com o WebSphere Application Server em execução na plataforma z/OS. Consulte sobre essas ferramentas de linha de comandos para aplicativos JAX-WS para saber mais sobre elas.sptcfg
Boas Práticas Boas Práticas: WebSphere Application Server fornece API Java para XML-Based Web Services (JAX-WS) e ferramentas do Java Architecture para XML Binding (JAXB). As ferramentas de linha de comandos wsimport, wsgen, schemagen e xjc estão localizadas no diretório app_server_root\bin\ no WebSphere Application Server tradicional.Os comandos xjc e schemagen estão localizados no diretório app_server_root\jaxb\bin\, no perfil Liberty. Em determinadas ocasiões, os artefatos gerados pelas ferramentas fornecidas pelo WebSphere Application Server e pelo JDK suportam os mesmos níveis das especificações. Em geral, os artefatos gerados pelas ferramentas JDK são portáteis entre outros ambientes de tempo de execução compatíveis. Entretanto, é uma boa prática usar as ferramentas fornecidas com este produto para obter uma perfeita integração no ambiente do WebSphere Application Server e para aproveitar os recursos que talvez só sejam suportados no WebSphere Application Server. Para usufruir das vantagens dos conjuntos de ferramentas JAX-WS e JAXB V2.2, use as ferramentas fornecidas com o servidor de aplicativos localizado no diretório app_server_root\bin\.bprac

Além de usar as ferramentas da linha de comandos, você pode chamar essas ferramentas JAX-WS a partir de ambientes de construção Ant. Use a tarefa Ant com.sun.tools.ws.ant.WsImport a partir do ambiente de construção Ant para chamar a ferramenta wsimport. Para funcionar adequadamente, esta tarefa Ant requer que chame Ant usando o script ws_ant.

Procedimento

Execute o comando wsimport para gerar os artefatos portáveis do cliente. A ferramenta wsimport está localizada no diretório app_server_root\bin\.
[Windows]
app_server_root\bin\wsimport.bat wsdl_URL 
[AIX][HP-UX][Linux][Solaris]
app_server_root/bin/wsimport.sh wsdl_URL
[IBM i]
app_server_root/bin/wsimport wsdl_URL
(Opcional) Utilize as seguintes opções com o comando wsimport:
  • Use a opção -verbose para ver uma lista de arquivos gerados ao executar o comando.
  • Utilize a opção -keep para manter arquivos Java gerados.
  • Utilize a opção -wsdlLocation para especificar o local do arquivo WSDL.
    Boas Práticas Boas Práticas: Uma boa prática para garantir que você produza um enterprise archive (EAR) de cliente de serviços da Web JAX-WS que seja portátil para outros sistemas é compactar o documento WSDL dentro do módulo aplicativo como um arquivo Java archive (JAR) ou um arquivo web application archive (WAR). É possível especificar um URI relativo para o local do arquivo WSDL utilizando o atributo de anotação -wsdllocation. Por exemplo, se seu arquivo MyService.wsdl estiver localizado no diretório META-INF/wsdl/, execute a ferramenta wsimport e use a opção -wsdllocation para especificar o valor a ser usado para o local do arquivo WSDL. Isso garante que os artefatos gerados contenham as informações corretas de -wsdllocation necessárias quando o aplicativo é carregado no console administrativo, por exemplo:
    wsimport -keep -wsdllocation /META-INF/wsdl/MyService.wsdl
    bprac
  • Utilize a opção -b se estiver utilizando customizações de WSDL ou de esquema para especificar arquivos de ligação externos que contenham suas customizações.

    É possível customizar as ligações em seu arquivo WSDL para permitir arquivos de mapeamentos ou anexos assíncronos. Para gerar interfaces assíncronas, inclua a declaração de ligação enableAsyncMapping de customização apenas do cliente no elemento wsdl:definitions ou em um arquivo de ligação externo que seja definido no arquivo WSDL. Use a declaração de ligação enableMIMEContent em seu cliente customizado ou arquivo de ligação do servidor ou desative as regras de mapeamento mime:content padrão. Para informações adicionais sobre declarações de ligações customizadas, consulte o capítulo 8, especificação JAX-WS.

Consulte sobre wsimport para obter informações adicionais sobre esse comando e opções adicionais que podem ser especificadas.

Resultados

Você tem os artefatos Java gerados para criar um cliente JAX-WS que pode chamar serviço da Web JAX-WS. Para obter informações adicionais sobre o uso, a sintaxe e os parâmetros do comando wsimport, consulte a documentação do comando wsimport para aplicativos JAX-WS.

Exemplo

O seguinte exemplo ilustra como o comando wsimport é usado para processar o arquivo de amostra ping.wsdl para gerar artefatos portáteis.
  1. Copie o arquivo ping.wsdl a seguir para um diretório temporário.
    <?xml version="1.0" encoding="UTF-8"?>
    <!--
     * Este programa pode ser usado, executado, copiado, modificado e distribuído
     * sem os direitos autorais para fins de desenvolvimento, uso, marketing ou distribuição.
     -->
    <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    	xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    	xmlns:tns="http://com/ibm/was/wssample/sei/ping/"
    	xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="PingService"
    	targetNamespace="http://com/ibm/was/wssample/sei/ping/">
    	<wsdl:types>
    		<xsd:schema
    			targetNamespace="http://com/ibm/was/wssample/sei/ping/"
    			xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    
    
    			<xsd:element name="pingStringInput">
    				<xsd:complexType>
    					<xsd:sequence>
    						<xsd:element name="pingInput" type="xsd:string" />
    					</xsd:sequence>
    				</xsd:complexType>
    			</xsd:element>
    		</xsd:schema>
    	</wsdl:types>
    	<wsdl:message name="pingOperationRequest">
    		<wsdl:part element="tns:pingStringInput" name="parameter" />
    	</wsdl:message>
    	<wsdl:portType name="PingServicePortType">
    		<wsdl:operation name="pingOperation">
    			<wsdl:input message="tns:pingOperationRequest" />
    
    		</wsdl:operation>
    	</wsdl:portType>
    	<wsdl:binding name="PingSOAP" type="tns:PingServicePortType">
    		<soap:binding style="document"
    			transport="http://schemas.xmlsoap.org/soap/http" />
    		<wsdl:operation name="pingOperation">
    			<soap:operation soapAction="pingOperation" style="document" />
    			<wsdl:input>
    				<soap:body use="literal" />
    			</wsdl:input>
    		</wsdl:operation>
    	</wsdl:binding>
    	<wsdl:service name="PingService">
    		<wsdl:port binding="tns:PingSOAP" name="PingServicePort">
    			<soap:address
    				location="http://localhost:9080/WSSampleSei/PingService" />
    		</wsdl:port>
    	</wsdl:service>
    </wsdl:definitions>
  2. Execute o comando wsimport a partir do diretório app_server_root\bin\.
    [Windows]
    app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
    [Linux][AIX][HP-UX][Solaris]Sistemas operacionais, como AIX ou Linux especificam a origem do script para o shell pai para herdar as variáveis exportadas, executando o seguinte comando:
    . ./setupCmdLine.sh  (Observe o espaço entre os pontos).
    a partir do diretório . /app_server_root>/bin. Execute o seguinte comando wsimport:
    app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl 
    [IBM i]
    app_server_root/bin/wsimport -keep -verbose ping.wsdl
Depois de gerar os arquivos de modelo do comando wsimport, os seguintes arquivos serão gerados:
com\ibm\was\wssample\sei\ping\ObjectFactory.java
com\ibm\was\wssample\sei\ping\package-info.java
com\ibm\was\wssample\sei\ping\PingServicePortType.java
com\ibm\was\wssample\sei\ping\PingService.java
com\ibm\was\wssample\sei\ping\PingStringInput.java

Os arquivos ObjectFactory.java, PingService.java e PingServicePortType.java são arquivos de classe Java gerados para usar quando compactar os artefatos Java com sua implementação do cliente dentro de um arquivo Java archive (JAR) ou de umarquivo Web application archive (WAR).

O que Fazer Depois

Conclua a implementação do cliente.

Ícone que indica o tipo de tópico Tópico de Tarefa



Ícone de registro de data e hora Última atualização: last_date
http://www14.software.ibm.com/webapp/wsbroker/redirect?version=cord&product=was-nd-mp&topic=twbs_jaxwsclientfromwsdl
Nome do arquivo: twbs_jaxwsclientfromwsdl.html