Comando wsimport para Aplicativos JAX-WS
A ferramenta de linha de comandos wsimport processa um arquivo Web Services Description Language (WSDL) existente e gera os artefatos necessários para desenvolver aplicativos de serviços da web Java™ API for XML-Based Web Services (JAX-WS). Os artefatos gerais são compatíveis com Java 5, tornando-os portáveis entre versões e plataformas diferentes do Java.
A ferramenta da linha de comandos wsimport suporta a abordagem top-down para desenvolver serviços da Web JAX-WS. Ao iniciar com um arquivo WSDL existente, utilize a ferramenta de linha de comandos wsimport para gerar os artefatos JAX-WS necessários.


- Service Endpoint Interface (SEI) - A SEI é a representação Java anotada do arquivo WSDL para o serviço da Web. Essa interface é utilizada para implementar os terminais de JavaBeans ou criar instâncias de cliente de proxy dinâmico.
- Classe de extensão javax.xml.ws.Service - É uma classe gerada que estende a classe javax.xml.ws.Service. Essa classe é utilizada para configurar e criar instâncias de dispatch e de proxy dinâmicas.
- Beans de dados necessários, incluindo quaisquer beans Java Architecture for XML Binding (JAXB) que são necessários para modelar os dados de serviço da web.

- Você deve definir todos os serviços dentro do arquivo principal WSDL. Os serviços que são definidos dentro de um arquivo WSDL importado não são processados pela ferramenta wsimport.
- Se você executar a ferramenta wsimport em um arquivo WSDL que implemente um padrão de estilo Documento ou Literal, os elementos complexTypes que definem os tipos de entrada e saída deverão ser compostos por nomes exclusivos para evitar conflitos de nomenclatura na lista de parâmetros para a operação.
- Se você estiver executando a ferramenta wsimport e transmitir um URI (Identificador Uniforme de Recursos) ?wsdl como um parâmetro para um arquivo WSDL, assegure-se de que esteja utilizando a URI WSDL resolvida real. No perfil completo, a ferramenta wsimport resolve corretamente o URI ?wsdl, mas outros URIs relativos que são referenciados podem não ser resolvidos de forma correta. No perfil Liberty, a ferramenta wsimport resolve corretamente o URI ?wsdl e outros URIs relativos que são referenciados.
Além de usar ferramentas da linha de comandos, é possível chamar essas ferramentas JAX-WS de dentro de ambientes de construção Ant para WebSphere Application Server tradicional. Use a tarefa Ant com.sun.tools.ws.ant.WsImport a partir do ambiente de construção Ant para chamar a ferramenta WsImport. Para que funcione corretamente, essa tarefa Ant requer que Ant seja chamado usando o script ws_ant.
Sintaxe
A sintaxe da linha de comandos é:
![[Windows]](../images/windows.gif)
app_server_root\bin\wsimport.bat [options] WSDL_URI
![[AIX]](../images/aixlogo.gif)
![[HP-UX]](../images/hpux.gif)
![[Linux]](../images/linux.gif)
![[Solaris]](../images/solaris.gif)
app_server_root/bin/wsimport.sh
[options] WSDL_URI
![[IBM i]](../images/iseries.gif)
app_server_root/bin/wsimport [options] WSDL_URI
Parameters
O WSDL_URI é o único parâmetro obrigatório. Os seguintes parâmetros são opcionais para o comando wsimport:
- -b <path>
- Especifica os arquivos de ligação de JAX-WS ou JAXB externos. É possível especificar vários arquivos de ligação de JAX-WS e JAXB utilizando a opção -b; no entanto, cada arquivo deve ser especificado com sua própria opção -b.
- -B <jaxbOption>
- Especifica a transmissão dessa opção para o compilador de esquema JAXB.
- -catalog
- Especifica o arquivo de catálogo para resolver as referências de entidades externas. Ele suporta os formatos TR9401, XCatalog e OASIS XML Catalog.
- -d <directory>
- Especifica onde colocar os arquivos de saída gerados.
- -extension
- Especifica se deve aceitar extensões customizadas para a funcionalidade que não sejam indicadas pela especificação JAX-WS. O uso de extensões customizadas pode resultar em aplicativos não portáteis ou que não interoperam com outras implementações.
- -help
- Exibe o menu de ajuda.
- -httpproxy:<host>:<port>
- Especifica um proxy HTTP. O valor de porta padrão é 8080.
- -keep
- Especifica se deve manter os arquivos de origem gerados.
- -p <package_name>
- Especifica um pacote de destino com essa opção de linha de comandos e substitui qualquer arquivo WSDL e customização de ligação de esquema para o nome do pacote e o algoritmo de nome de pacote padrão definido na especificação JAX-WS.
- -quiet
- Especifica a supressão da saída wsimport .
- -s <directory>
- Especifica o diretório para colocar os arquivos de origem gerados.
- -target <version>
- Especifica a geração de código compatível com um nível de especificação JAX-WS específico. Especifique a versão 2.0 ou 2.1 para gerar código que seja compatível com a especificação JAX-WS 2.0 ou JAX-WS 2.1, respectivamente. Especificar a versão 2.1 indica para gerar o código que é compatível com a especificação JAX-WS 2.1. O valor padrão é a versão 2.2 e gera código compatível para a especificação JAXB 2.2.
- A opção target é necessária para o perfil Liberdade.
- -verbose
- Especifica para apresentar mensagens sobre o que o compilador está fazendo.
- -version
- Imprime as informações de versão. Se você especificar essa opção, apenas as informações de versão serão incluídas na saída e o processamento de comando normal não ocorrerá.
- -wsdlLocation
- Especifica o valor @WebServiceClient.wsdlLocation.
Configurações suportadas: A ferramenta wsimport não configura o valor @WebService.wsdlLocation por padrão, ou quando o atributo -wsdlLocation é especificado. A ferramenta de linha de comandos wsimport atualiza só a anotação @WebServiceClient.wsdlLocation. É possível atualizar manualmente a anotação @WebService.wsdlLocation com uma URL relativa que especifica o local do arquivo WSDL (Web Services Description Language). Se a anotação @WebService.wsdlLocation estiver presente em uma classe de implementação do terminal, o valor deverá ser uma URL relativa e o documento WSDL que é referido deverá ser empacotado com o aplicativo.sptcfg
Evitar Problemas: Se você especificar uma URL HTTPS para o parâmetro -wsdlLocation, a ferramenta wsimport gerará uma classe de serviço com um construtor sem argumento que não é válido. Evite usar o construtor de serviço sem argumento para instanciar o serviço. Em vez disso, passe a URL HTTPS para um dos construtores de classe de serviço que usa uma URL do WSDL para um argumento, por exemplo:
gotchaMyService("https://example.ibm.com/My?wsdl");
- -clientJar
- wsimport no serviço WSDL gera as classes necessárias para a chamada de serviço da web. Mas nem todas as informações que são requeridas pelo tempo de execução do JAX-WS são capturadas na SEI ou no WebServiceClient por meio de anotações de serviço da web padrão. A classe gerada tem o local do WSDL, para que ele possa recuperar os metadados adicionais do serviço no tempo de execução. Entretanto, uma conexão extra é necessária apenas para acessar os metadados toda vez que uma instância de serviço for criada, o que aumenta o uso de rede. Usando a opção -clientJar para wsimport, o WSDL e o esquema são transferidos por download automaticamente e todos os artefatos do lado do cliente gerados são empacotados em um arquivo JAR. Portanto, é possível incluir o arquivo JAR gerado usando essa nova opção no caminho da classe e não é necessário buscar os WSDLs do terminal toda vez que uma instância do serviço é criada, economizando uso de rede.