Você está na página 1de 13

http://www.vieirajunior.com/index.php?

option=com_content&view=article&id=60:jaxwstutorial&catid=31:general&Itemid=56 Webservices com Eclipse, JAXWS e Tomcat By Administrador, on 20-06-2008 00:30 Views : 20183 Favoured : None Published in : Java, General

Ol, nesta dica vou mostrar como fazer um webservice com o Eclipse, JAXWS e Tomcat. Faa o download do JAX-WS em: https://jax-ws.dev.java.net/ Baixe a verso 2.1.4. Depois do download execute o jar com o comando: * java -jar JAXWS2.1.4-20080502.jar

Criando o projeto Crie um novo projeto dinmico, Dynamic web project.

Coloque o nome do projeto e selecione como Target Runtime o tomcat e clique em Finish.

Seu projeto deve estar com a estrutura abaixo:

Crie um pacote cadastro para a classe que vai ser nosso webservice, depois crie a classe CadastraPessoaWS. Crie um pacote pessoa e neste pacote a classe Pessoa: File: Pessoa.java view plaincopy to clipboardprint? 1. package pessoa; 2. 3. import java.io.Serializable; 4. 5. public class Pessoa implements Serializable 6. { 7. private static final long serialVersionUID = 1L; 8. private Long id; 9. private String nome; 10. private String login; 11. private String senha; 12. 13. public Pessoa() 14. { 15. } 16. 17. public Long getId() { 18. return id; 19. } 20. 21. public void setId(Long id) { 22. this.id = id; 23. } 24. 25. public String getNome() { 26. return nome; 27. } 28.

29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. }

public void setNome(String nome) { this.nome = nome; } public String getLogin() { return login; } public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; }

package pessoa; import java.io.Serializable; public class Pessoa implements Serializable { private static final long serialVersionUID = 1L; private Long id; private String nome; private String login; private String senha; public Pessoa() { } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getNome() { return nome; } public void setNome(String nome) { this.nome = nome; } public String getLogin() { return login; }

public void setLogin(String login) { this.login = login; } public String getSenha() { return senha; } public void setSenha(String senha) { this.senha = senha; } } File: CadastraPessoaWS.java view plaincopy to clipboardprint? 1. package cadastro; 2. 3. import pessoa.Pessoa; 4. 5. public class CadastraPessoaWS 6. { 7. public void cadastrar(Pessoa pessoa) 8. { 9. System.out.println(pessoa.getNome()); 10. System.out.println(pessoa.getLogin()); 11. System.out.println(pessoa.getSenha()); 12. } 13. } package cadastro; import pessoa.Pessoa; public class CadastraPessoaWS { public void cadastrar(Pessoa pessoa) { System.out.println(pessoa.getNome()); System.out.println(pessoa.getLogin()); System.out.println(pessoa.getSenha()); } } Antes de continuar vamos importar alguns jars para nosso projeto. Importe todos os Jars que esto na pasta lib do diretrio da biblioteca Jax-Ws para a pasta lib que est dentro de WebContent\WEB-INF. Aps importar os jars do JAXWS, vamos anotar a classe CadastraPessoaWS e criar o mtodo que ser exposto como servio na web. Na classe CadastraPessoaWS crie o mtodo cadastrar e passe como paramtro uma pessoa, na linha antes da declarao do mtodo coloque a seguinte anotao @WebMethod e antes do paramtro coloque a anotao @WebParam(name="pessoa"), na linha anterior declarao da classe coloque a anotao @Webservice, sua classe deve estar assim:

File: CadastraPessoaWS.java view plaincopy to clipboardprint? 1. package cadastro; 2. 3. import javax.jws.WebMethod; 4. import javax.jws.WebParam; 5. import javax.jws.WebService; 6. import pessoa.Pessoa; 7. 8. @WebService 9. @SOAPBinding(parameterStyle=ParameterStyle.BARE) 10. public class CadastraPessoaWS 11. { 12. @WebMethod 13. public void cadastrar(@WebParam(name="pessoa") Pessoa pessoa) 14. { 15. System.out.println(pessoa.getNome()); 16. System.out.println(pessoa.getLogin()); 17. System.out.println(pessoa.getSenha()); 18. } 19. } package cadastro; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; import pessoa.Pessoa; @WebService @SOAPBinding(parameterStyle=ParameterStyle.BARE) public class CadastraPessoaWS { @WebMethod public void cadastrar(@WebParam(name="pessoa") Pessoa pessoa) { System.out.println(pessoa.getNome()); System.out.println(pessoa.getLogin()); System.out.println(pessoa.getSenha()); } } Nosso mtodo vai apenas imprimir os valores dos atributos da pessoa, mas poderia ser colocado por exemplo a lgica para gravar a pessoa em um banco de dados. Na pasta "WebContent\WEB-INF" crie um arquivo XML com o nome: "sun-jaxws.xml com o contedo:" view plaincopy to clipboardprint? 1. <endpoints version="2.0"><br> <endpoint name="cadastraPessoa" implementation="cadastro.CadastraPessoaWS" url-pattern="/cadastro"><br> </endpoint><br></endpoints>

Edite o arquivo "WebContent\WEB-INF\web.xml" e deixe-o como o abaixo: view plaincopy to clipboardprint? 1. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemalocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 2. <display-name>CadastroPessoa</display-name> 3. <welcome-file-list> 4. <welcome-file>index.html</welcome-file> 5. <welcome-file>index.htm</welcome-file> 6. <welcome-file>index.jsp</welcome-file> 7. <welcome-file>default.html</welcome-file> 8. <welcome-file>default.htm</welcome-file> 9. <welcome-file>default.jsp</welcome-file> 10. </welcome-file-list><listener> 11. <listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> 12. </listener> 13. <servlet> 14. <description>Cadastro de Pessoa JAX-WS</description> 15. <display-name>cadastro</display-name> 16. <servlet-name>cadastro</servlet-name> 17. <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> 18. <load-on-startup>1</load-on-startup> 19. </servlet> 20. <servlet-mapping> 21. <servlet-name>cadastro</servlet-name> 22. <url-pattern>/cadastro</url-pattern> 23. </servlet-mapping> 24. <session-config> 25. <session-timeout>60</session-timeout> 26. </session-config> 27. </web-app> CadastroPessoa index.html index.htm index.jsp default.html default.htm default.jsp com.sun.xml.ws.transport.http.servlet.WSServletContextListener Cadastro de Pessoa JAX-WS cadastro cadastro com.sun.xml.ws.transport.http.servlet.WSServlet 1 cadastro /cadastro

60 Pronto, a parte server est completa, vamos agora fazer um cliente para nosso servio web. Crie um novo projeto java com o nome CadastroPessoaCliente, crie uma pasta dentro do projeto com o nome lib e importe os Jars da pasta lib do JAXWS para esta pasta. Configure o build path e inclua os jars da pasta lib em libraries. Antes de continuar vamos iniciar o webservice no tomcat. Clique com o boto direito no projeto CadastroPessoa e v em "Run as -> Run on server", selecione o Tomcat e na tela seguinte veja se a aplicao est na caixa no lado direito e clique em finish. O Tomcat ir iniciar automaticamente.

Verifique se o servio est disponvel acessando o endereo: http://localhost:8080/CadastroPessoa/cadastro

Com o servio iniciado, vamos utilizar a ferramenta "wsimport" para gerar o cdigo das classes que iro acessar o webservice. Abra um terminal ou prompt do dos no windows e v at o diretrio do projeto cliente e execute o seguinte comando: $> wsimport -d src -s src http://localhost:8080/CadastroPessoa/cadastro?wsdl Este comando ir gerar o cdigo das classes necessrias para nosso cliente com base no wsdl do servio. Volte para o eclipse e de um "Refresh" no projeto, repare que foi criado um pacote "cadastro" com algumas classes dentro.

Crie mais um pacote com o nome "cliente" e neste pacote crie uma classe com o nome "Cliente", crie o mtodo main e deixe a classe conforme o cdigo abaixo: view plaincopy to clipboardprint? 1. package cliente; 2. 3. import cadastro.CadastraPessoaWS; 4. import cadastro.CadastraPessoaWSService; 5. import cadastro.Pessoa; 6. 7. public class Cliente 8. { 9. public static void main(String[] args) 10. { 11. Pessoa pessoa = new Pessoa(); 12. pessoa.setNome("Paulo Teste"); 13. pessoa.setLogin("paulo"); 14. pessoa.setSenha("senha"); 15. 16. CadastraPessoaWSService servico = new CadastraPessoaWSService(); 17. CadastraPessoaWS port = servico.getCadastraPessoaWSPort(); 18. port.cadastrar(pessoa); 19. } 20. } package cliente; import cadastro.CadastraPessoaWS; import cadastro.CadastraPessoaWSService; import cadastro.Pessoa;

public class Cliente { public static void main(String[] args) { Pessoa pessoa = new Pessoa(); pessoa.setNome("Paulo Teste"); pessoa.setLogin("paulo"); pessoa.setSenha("senha"); CadastraPessoaWSService servico = new CadastraPessoaWSService(); CadastraPessoaWS port = servico.getCadastraPessoaWSPort(); port.cadastrar(pessoa); } } Pronto, nosso cliente est pronto, agora s executar e ver o resultado na "Console" do eclipse.

Voc pode baixar os cdigos de exemplo deste tutorial abaixo: CadastroPessoa.zip CadastroPessoaCliente.zip

Você também pode gostar