Criando Web Service e Web Service-Client com JAX-WS passo a passo

Para este projeto será utilizado o Eclipse Juno e o jdk1.6.0_38.

Crie um New Java Project com o nome ValidatesAddress, para o JRE selecione a  opção JSE-1.6 e pressione a opção Finish. O projeto foi cirado com sucesso.

projectValidates

projectValidatesCreate

 Crie um New Java Package com o nome com.validates.address.ws e pressione a opção Finish.

packageValidatesWS

packageValidatesWSCreate

Crie uma New Java Class com o nome ValidatesAddressWS e selecione a opção Finish.

classValidatesAddressWS01

classValidatesAddressWS

 Altere a view para Web.

viewWeb

Crie uma New JAva Package com o nome com.validates.addres.model

packageModel

Crie uma New Java Class com o nome Address e pressione a opção Finish.

classAddress01

classAddress

Crie os atributos da class Address conforme script a seguir, crie também os getters and setters.

classAddressAtributos

Retorne a class ValidatesAddressWS inclua a annotation @WebService acima do nome da class para que a mesma seja interpretada como um Web Service, inclua também o método validatesAddress exibido a seguir.

classValidatesAddressWS01b

para publicarmos a class ValidatesAddressWS e seu método como um Web Service será utilizada a ferramenta Java ‘wsgen’, responsável por gerar JAX-WS artefatos portatteis usados em Web Services.

Abra o prompt de comando ou terminal vá até a pasta do projeto e execute o comando a seguir.

wsgenSRC

wsgen -cp bin -d bin com.validates.address.ws.ValidatesAddressWS .

wsgen : ferramenta que gera JAX-WS (artefatos portateis utilizados em Web Services).

-cp : especifica o class path da class ValidatesAddressWS.

bin : pasta.

-d : especifica onde serão colocados os arquivos.

Para visualizar os fonts gerados utilize a opção -s src no wsgen, conforme visto a seguir.

wsgen -cp bin -d bin com.validates.address.ws.ValidatesAddressWS .

wsgen

Atualize o Project Explores pressionando F5, repare que foi criado um novo package com o nome com.validates.address.ws.jaxws com duas classes.

packageJaxWS

Crie um New Package com o nome com.validates.address.ws.endpoint e pressione Finish.

packageEndpoint

Crie uma New Java Class com o nome ValidatesAddressEndpointPublisher marque a opção de checkbox public static void main(String[] args), pressione a opção Finish.

classEndpointPublisher

Esta class será publicada como um Endpoint de Web Service, após a execução da mesmo o arquivo WSDL terá sido gerado automaticamente.

classEndpointPublisherCreate

Edite a class ValidatesAddressEndpointPublisher conforme o script a seguir.

classEndpointPublisherCreateMain

Execute a class ValidatesAddressEndpointPublisher a partir do Run As – Java Application, repare que nenhum resultado será exibido no Console.

runAsPublisherEndpoint

Acesse http://localhost:8080/ValidatesAddress/ValidatesAddressWS?wsdl, será exibido o arquivo wsdl similar ao arquivo exibido a seguir.

wsdl

Parabéns Web Service foi publicado o arquivo WSDL foi gerado com sucesso.

Criando o Client para consumir o serviço do Web Service criado

Para isto será necessário criar um New Java Project com o nome ValidatesAddressClient.

projectClient

projectClientSRC

Será utilizada agora uma outra ferramenta Java chamada wsimport responsável criar os artefatos do Web Service e possibilitar o consumo dos serviços disponíveis.

A partir do comando a seguir, será gerada uma cópia do Web Service e serviços disponíveis, para o Client(ValidatesAddressClient) criado.

C:\****>C:***\Java\jdk1.6.xxx\bin\wsimport -p com.projeto.ws.client -keep -Xnocompile -wsdllocation \wsdl http://localhost:9999/projetoWS/ClasseWebService/ClasseWebService.wsdl

\wsdl >> local onde ficarão os arquivos ClasseWebService.wsdl.xml e ClasseWebService_schema1.xsd.xml
-Xnocompile >> para não compilar
http://localhost:9999/projetoWS/ClasseWebService/ClasseWebService.wsdl >> endereço para gerar o client a partir do wsdl
-p com.projeto.ws.client >> nome do pacote que será gerado com as classes do client

wsimport

wsimport -s src -d bin http://localhost:8080/ValidatesAddress/ValidatesAddressWS?wsdl .

Acesse o prompt ou terminal vá até a pasta do projeto Client e execute o script a seguir.

Repare que o resultado será semelhante ao exibido acima.

Atualize o Project Explorer pressionando F5, O package com.validates.address.ws e algumas class foram criados automaticamente. A importação foi concluída com sucesso.

wsimportClass

Crie um New Java Package chamado com.validates.address.ws.client e pressione Finish.

packageClient

Crie uma New Java Class ValidatesAddressClient com o método main para consumir o Web Service.

classClient

Preencha a class conforme o script a seguir e execute a partir do Run As – Java Application.

classClientMain

O Resultado será semelhante ao exibido a seguir.

console

Com isto finalizamos o objetivo deste poste foi criar um Web Service e consumi-lo a partir de Client.

Gostaria de agradecer grandemente a Praveen Macherla e o Tutorial http://theopentutorials.com, por ser uma das referências de estudo.

Muito obrigado e até o próximo post.

Referencias Bibliográficas:

http://theopentutorials.com/examples/java-ee/jax-ws/create-and-consume-web-service-using-jax-ws/

Sobre o Autor:

 fotoazulCarl Edwin Antonio Nascimento é especialista formando em MBA em Desenvolvimento de Software Web pela UNIP, Analista de Sistemas formado pela Faculdade Anhanguera.

Cursou Formação Java Avançado – Laboratório Web com JSF2 com CDI na Caelum–SP em 2013, cursou também Formação Java e AWB(JSF) pela infoSERVER. Seu primeiro contato

com programação na Microcamp onde se formou como Web Design Developer 2008.

Atualmente é Analista Programador Java em uma empresa de Monitoramento e Rastreamento, trabalhou também como Programador pela consultoria InfoSERVER prestando serviço para o Banco
Bradesco 2010-2012 e ministrou aulas como professor de informática 2010–2011.

Anúncios

9 comentários em “Criando Web Service e Web Service-Client com JAX-WS passo a passo

  1. Segui o passo a passo – funcionou com apenas uma pequena alteração: na classe ValidatesAddressEndpointPublisher, usei a porta 8081 (poderia ter usado outra qualquer) porque a 8080 estava ocupada.
    Dica: se quiser colocar o client em outra máquina, ao invés de usar o localhost, usar 0.0.0.0 na classe acima citada, ficando assim:
    Endpoint.publish(“http://0.0.0.0:8081/ValidatesAddress/ValidatesAddressWS”, new ValidatesAddressWS());
    Na máquina client, executar o wsimport colocando o IP da máquina hospedeira. Ex:
    wsimport -s src -d bin http://192.168.0.15:8081/ValidatesAddress/ValidatesAddressWS?wsdl.
    Essa dica de usar “0.0.0.0” eu vi em um site mas não lembro qual.
    Tem um site que diz pra não usar o “0.0.0.0” (http://stackoverflow.com/questions/15487762/publish-and-stop-endpoint-web-service-in-java).
    Minha infra: a máquina hospedeira foi um notebook QBex 64 bits com Ubuntu 12.04 LTS e Eclipse Indigo. A máquina client é um netbook Asus com Ubuntu 12.04 LTS e Eclipse Helios.

    1. Boa noite! Como faço para adicionar dados de login no client? To tentando consumir um webservice que requer autenticação. Como posso fazer isso? Muito obrigado.

  2. Estou criando um cliente que consume um webservice e estou com um problema, preciso colocar informações no Header da mensagem soap. Usei o wsimport para criar o cliente

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s