Gerando Artefatos Java para Aplicativos JAX-WS a partir de um Arquivo WSDL
Use as ferramentas JAX-WS para gerar os artefatos Java™ que são necessários para desenvolver serviços da Web JAX-WS 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 Java API for XML-Based Web Services (JAX-WS) iniciando com um arquivo WSDL, você deve obter a Uniform Resource Locator (URL) para o arquivo WSDL.
Se o arquivo WSDL for um arquivo local, a URL será semelhante
a este exemplo: file:drive:\path\file_name.wsdl.
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
- SEI (Service Endpoint Interface)
- Classe de Serviço
- A classe de exceção que é mapeada da classe wsdl:fault (se houver)
- O JAXB (Java Architecture for XML Binding) gerou valores de tipo que são classes Java mapeadas a partir dos tipos de esquema XML


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
![[Windows]](../images/windows.gif)
app_server_root\bin\wsimport.bat wsdl_URL
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsimport.sh wsdl_URL
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsimport wsdl_URL
- 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: 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:
bpracwsimport -keep -wsdllocation=META-INF/wsdl/MyService.wsdl
- 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 ativar mapeamentos ou conexões assíncronas. 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
Exemplo
- 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>
- Execute o comando wsimport a partir do diretório
app_server_root\bin\.
app_server_root\bin\wsimport.bat -keep -verbose ping.wsdl
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:
a partir do diretório . /app_server_root>/bin. Execute o comando wsimport,. ./setupCmdLine.sh (Observe o espaço entre os pontos).
app_server_root/bin/wsimport.sh -keep -verbose ping.wsdl
app_server_root/bin/wsimport -keep -verbose ping.wsdl
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\PingStringInput.java
com\ibm\was\wssample\sei\ping\PingService.java
O arquivo ObjectFactory.java contém os métodos factory para cada interface de conteúdo Java e interface de elemento Java gerada no pacote de ping associado. O arquivo package-info.java obtém o valor targetNamespace e cria a estrutura de diretório. O arquivo PingServicePortType.java é a classe SEI (interface de terminal de serviço) gerada que contém a definição de método ping. O arquivo PinStringInput.java contém os valores de tipo gerado por JAXB que são classes Java mapeadas dos tipos de esquema XML. O arquivo PingService.java é o arquivo de classe do provedor de serviços gerado, utilizado pelo cliente JAX-WS.