Click here to load reader
Upload
mauricio-linhares
View
525
Download
0
Embed Size (px)
Citation preview
Java WSDP 2.0
Desenvolvendo aplicações como o Java Web Services Developer Pack
Juan Di Carlo DamascenoMaurí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;
@WebServicepublic 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="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>
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>
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="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)); }}
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;