Java wsdp

688 views
597 views

Published on

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
688
On SlideShare
0
From Embeds
0
Number of Embeds
72
Actions
Shares
0
Downloads
4
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Java wsdp

  1. 1. Java WSDP 2.0 Desenvolvendo aplicações como o Java Web Services Developer Pack Juan Di Carlo Damasceno Maurício Linhares
  2. 2. O que é o Java WSDP? <ul><li>Conjunto de tecnologias para o desenvolvimento de web services em Java; </li></ul><ul><li>Desenvolvido pela Sun Microsystems; </li></ul><ul><li>Faz uso de bibliotecas padrão do Java, mas não é um padrão para o desenvolvimento de web services na linguagem; </li></ul>
  3. 3. Tecnologias incluídas <ul><li>Java Architecture for XML Web Services (JAX-WS); </li></ul><ul><li>Java Architecture for XML Binding (JAXB); </li></ul><ul><li>Java Streaming XML Parser (StAX); </li></ul><ul><li>SOAP with Attachments API for Java (SAAJ) </li></ul><ul><li>Java API for XML Registries (JAXR) </li></ul>
  4. 4. Java API for XML Web Services <ul><li>Provê comunicação remota via XML e Web Services; </li></ul><ul><li>A comunicação pode ser orientada a mensagens ou a RPC; </li></ul><ul><li>Não é necessário conhecer o protocolo SOAP ou o formato das mensagens; </li></ul><ul><li>O Web Services são classes (ou interfaces) comuns do Java; </li></ul><ul><li>Clientes e serviços se comunicam via XML, com definições WSDL via HTTP; </li></ul>
  5. 5. Comunicação Cliente-Servidor
  6. 6. Para implementar um Web Service... <ul><li>Deve-se definir uma “service endpoint interface” (SEI); </li></ul><ul><li>Definir quais métodos vão ser “expostos” para invocação remota; </li></ul><ul><li>Compilar a classe do serviço </li></ul>
  7. 7. Exemplo de Web Service <ul><li>import javax.jws.WebMethod; </li></ul><ul><li>import javax.jws.WebService; </li></ul><ul><li>@WebService </li></ul><ul><li>public class Hello { </li></ul><ul><li>private String message = new String(&quot;Hello, &quot;); </li></ul><ul><li>@WebMethod </li></ul><ul><li>public String sayHello(String name) { </li></ul><ul><li>return message + name + &quot;.&quot;; </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  8. 8. Gerando as classes necessárias com o “wsgen” <ul><li>É a ferramenta utilizada para exportar os métodos como serviços; </li></ul><ul><li>Ele normalmente gera duas classes para cada “método de serviço”, uma com o nome do método (“SayHello”) e outra com o nome do método mais o sufixo “Response” (“SayHelloResponse”) além do arquivo de configuração do JAX-WS; </li></ul>
  9. 9. Executando o “wsgen” <ul><li>wsgen </li></ul><ul><li>-d build </li></ul><ul><li>-s build </li></ul><ul><li>-classpath build </li></ul><ul><li>helloservice.endpoint.Hello </li></ul>Destino dos compilados Destino dos fontes
  10. 10. Configuração do JAX-WS no servidor <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'> </li></ul><ul><li><endpoint </li></ul><ul><li>name='HelloService' </li></ul><ul><li>implementation='helloservice.endpoint.Hello' </li></ul><ul><li>url-pattern='/hello'/> </li></ul><ul><li></endpoints> </li></ul>
  11. 11. Configuração do web.xml <ul><li><?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?> </li></ul><ul><li><web-app > </li></ul><ul><li><listener> </li></ul><ul><li><listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class> </li></ul><ul><li></listener> </li></ul><ul><li><servlet> </li></ul><ul><li><display-name>HelloService</display-name> </li></ul><ul><li><servlet-name>HelloService</servlet-name> </li></ul><ul><li><servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class> </li></ul><ul><li></servlet> </li></ul><ul><li><servlet-mapping> </li></ul><ul><li><servlet-name>HelloService</servlet-name> </li></ul><ul><li><url-pattern>/hello</url-pattern> </li></ul><ul><li></servlet-mapping> </li></ul><ul><li></web-app> </li></ul>
  12. 12. Utilizando o “wsimport” <ul><li>É a ferramenta que transforma um documento WSDL em objetos Java para a invocação de um serviço remotamente; </li></ul><ul><li>Ele gera vários arquivos com base no WSDL fornecido, que devem ser utilizados para invocar um web service; </li></ul>
  13. 13. Exemplo de cliente para o serviço <ul><li>public class HelloClient { </li></ul><ul><li>@WebServiceRef(wsdlLocation=&quot;http://localhost:8080/helloservice/hello?wsdl&quot;) </li></ul><ul><li>static HelloService service; </li></ul><ul><li>public static void main(String[] args) { </li></ul><ul><li>HelloClient client = new HelloClient (); </li></ul><ul><li>client.doTest(args); </li></ul><ul><li>} </li></ul><ul><li>public void doTest(String[] args) { </li></ul><ul><li> Hello port = service .getHelloPort(); </li></ul><ul><li>String name = args[0]; </li></ul><ul><li> System.out.println(port.sayHello(name)); </li></ul><ul><li>} </li></ul><ul><li>} </li></ul>
  14. 14. Java Architeture for XML Binding <ul><li>API para o relacionamento de definições XML-Schema para Java; </li></ul><ul><li>Simplifica o uso de arquivos XML baseados em Schema; </li></ul><ul><li>Usa geração de código para a criar parsers de mensagens; </li></ul><ul><li>Pode ser utilizado fora do Java-WSDP; </li></ul>
  15. 15. Java Streaming API for XML (StAX) <ul><li>Parser XML de altíssima performance e baixo consumo de memória; </li></ul><ul><li>Baseado em eventos pedidos pelo usuário (lê quando o usuário pede que seja lido); </li></ul><ul><li>Não mantém contexto do documento que é lido; </li></ul><ul><li>Funciona na escrita e leitura de documentos XML; </li></ul>
  16. 16. Conclusão - Prós <ul><li>Conjunto de classes extremamente simples; </li></ul><ul><li>Pouca configuração necessária; </li></ul><ul><li>Uso de anotações para simplificar o desenvolvimento de serviços; </li></ul><ul><li>Não é necessário entender web services a fundo para implementar uma solução que os utilize </li></ul>
  17. 17. Conclusão - Contras <ul><li>Documentação incompleta para uso em servidores que não sejam o Sun AS; </li></ul><ul><li>Uso de geração de código para a execução dos serviços; </li></ul><ul><li>Dificuldade no mapeamento de objetos complexos usando JAXB; </li></ul>

×