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

Java wsdp

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