java wsdp

17

Click here to load reader

Upload: mauricio-linhares

Post on 06-Jun-2015

525 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Java wsdp

Java WSDP 2.0

Desenvolvendo aplicações como o Java Web Services Developer Pack

Juan Di Carlo DamascenoMaurício Linhares

Page 2: Java wsdp

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;

Page 3: Java wsdp

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)

Page 4: Java wsdp

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;

Page 5: Java wsdp

Comunicação Cliente-Servidor

Page 6: Java wsdp

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

Page 7: Java wsdp

Exemplo de Web Service

import javax.jws.WebMethod;import javax.jws.WebService;

@WebServicepublic class Hello { private String message = new String("Hello, "); @WebMethod public String sayHello(String name) { return message + name + "."; }

}

Page 8: Java wsdp

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;

Page 9: Java wsdp

Executando o “wsgen”

wsgen

-d build

-s build

-classpath build

helloservice.endpoint.Hello

Destino dos compilados

Destino dos fontes

Page 10: Java wsdp

Configuração do JAX-WS no servidor<?xml version="1.0" encoding="UTF-8"?>

<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>

Page 11: Java wsdp

Configuração do web.xml

<?xml version="1.0" encoding="UTF-8"?><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>

Page 12: Java wsdp

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;

Page 13: Java wsdp

Exemplo de cliente para o serviço

public class HelloClient { @WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl") 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)); }}

Page 14: Java wsdp

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;

Page 15: 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;

Page 16: Java wsdp

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

Page 17: Java wsdp

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;