370 likes | 472 Views
Java Web Services. Daniel Barden – 0789/01-1 Leonardo Golob – 2029/01-?. Web Services. Web Services O que é? Como surgiram? Quais suas vantagens? Como são implementados? XML SOAP UDDI WSDL. Java Web Services. Java Web Services Quais vantagens oferecem Pacotes para tratamento de XML
E N D
Java Web Services Daniel Barden – 0789/01-1 Leonardo Golob – 2029/01-?
Web Services • Web Services • O que é? • Como surgiram? • Quais suas vantagens? • Como são implementados? • XML • SOAP • UDDI • WSDL
Java Web Services • Java Web Services • Quais vantagens oferecem • Pacotes para tratamento de XML • Java Web Services Developer Pack
Web Services • O que é? • Modo de acessar Serviços Remotos • Baseada em troca de mensagens XML • Modelo Cliente/Servidor • Evolução de RPC
Web Services • São necessários três componentes: • Service Provider: Implementa o serviço e o publica • Service Repository: Publica o serviço • Service Requester: Busca o serviço no Repository e o utiliza
Web Services • Fluxo: • 1) Service Provider cria o serviço e o publica no Service Repository; • 2) Service Requester procura o serviço no Service Repository; • 3) Service Repository devolve as informações sobre o serviço; • 4) Service Requester manda a operação para o Service Provider; • 5) Service Provider devolve o resultado da operação;
Web Services • Como a informação é trocada • WSDL: Linguagem baseada em XML para descrever o serviço que está sendo oferecido; • SOAP: Linguagem baseada em XML, para troca de mensagem entre Requester e Provider • Ambas possuem mecanismos para efetuar validação (schemas); • Linguagens bem definidas.
Web Services • WSDL (Web Service Description Language) • Descreve como se comunicar com Web Service; • Informações como: • Definição de tipos de dados • Operações suportadas • Endereços de rede • Formatos de dados para entrada e saída • ... • Pode ser gerada automaticamente por ferramentas como o java2wsdl;
Web Services • SOAP (Simple Object Access Protocol) • Formato usado para troca de mensagens; • Possuem os dados que serão trocados pelos programas • Normalmente encapsulado em HTTP • Porém, outro protocolo poderia ser utilizado (ex: SMTP)
Web Services • Exemplo SOAP • POST /StockQuote HTTP/1.1Host: www.stockquoteserver.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "http://example.org/2001/06/quotes"<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope" ><env:Body> <m:GetLastTradePrice env:encodingStyle="http://www.w3.org/2001/06/soap-encoding" xmlns:m="http://example.org/2001/06/quotes"> <symbol>DIS</symbol> </m:GetLastTradePrice></env:Body></env:Envelope>
Web Services • UDDI • Universal Description, Discovery, and Integration • Padrão da indústria para registro de Web Services • Variante: • ebXML: Padrão aberto para registro
Web Services • Diferenças com RPC • Dados são transmitidos via XML • Facilidade para o programador • Dados são passados através de protocolos padrões, como HTTP • Serviços bem definidos (chamadas, parâmetros...) • Repositório de Serviços bem definido
Web Services • Vantagens • Mecanismos projetados antes de começarem a ser usados • Interoperabilidade • Aplicações fracamente acopladas • Desvantagens • Segurança • Performance
Java Web Services • Web Services são baseados em XML: • SOAP • WSDL • UDDI • Java procura prover soluções para lidar com XML • Ferramentas já desenvolvidas para desenvolver Java Web Services
Java Web Services • Conjunto de pacotes para facilitar o tratamento de XML: • Java API for XML Processing (JAXP) • Java Architecture for XML Binding (JAXB) • Java API for Messaging (JAXM) • SOAP with Attachments API for Java (SAAJ) • Java API for XML-based RPC (JAX-RPC) • Java API for XML Registries (JAXR)
Java Web Services • Java API for XML Processing (JAXP) • API utilizada para interpretar e transformar XMLs • Possui mecanismos de validação • Permite uso de DOM, SAX e XSLT • Algumas implementações: • Apache Xerces • Apache Crimson
Java Web Services • Java Architecture for XML Binding (JAXB) • Procura associar um schema XML ao código Java • Binding Compiler cria classes a partir de Schemas • Através do método de Marshall, lê um documento XML e o converte em uma hierarquia de objetos. • Através do método unmarshall, cria um documento XML a partir de uma hierarquia de objetos.
Java Web Services • Java API for XML Messaging (JAXM) • Propõe uma solução leve para sistemas com troca de mensagens baseadas em XML • Abstrai protocolos de comunicação (HTTP, SMTP,...)
Java Web Services • JAXM • 5 Modos de operação • Assícrona • Assíncrona com ACK • Síncrona • Síncrona com ACK • Fire and Forget
Java Web Services • SOAP with Attachments API for Java (SAAJ) • API para tratamento de mensagens SOAP • Antigamente fazia parte da JAXM • Troca de mensagens síncrona • JAXM normalmente usada para troca Assíncrona
Java Web Services • Java API for XML-based RPC (JAX-RPC) • Especificação para realizar RPC via SOAP por HTTP • Similar a RMI, porém com o poder de acessar Web Services que não são Java.
Java Web Services • JAX-RPC • Utiliza serviço a partir de 3 passos: • Obter uma instância do Stub • Configurar o serviço que devemos utilizar • Chamar o método
Java Web Services • JAX-RPC 00 public class HelloClient { 01 public static void main(String[] args) { 02 try { 03 HelloIF_stub stub = 04 (HelloIF_stub)(new HelloWorld_Impl().getHelloIF() ); 05 stub.setProperty( javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY,args[0] ); 06 System.out.println(stub.sayHello("Duke!")); 07 } catch (Exception ex) { 08 ex.printStackTrace(); 09 } 10 } 11 }
Java Web Services • JAX-RPC • Linhas 3 e 4 buscam o stub e o instanciam • Linha 5 configura o web service desejado: args[0] representa a URL do web service; • Linha 6 chama o método.
Java Web Services • Java API for XML Registries (JAXR) • API que procura facilitar o acesso a repositórios de web services • Suporta ebXML (similar ao UDDI, porém um padrão aberto) e UDDI • Possui suporte tanto ao registro como a busca de web services
Java Web Services • Java Web Services Developer Pack (JWSDP) • Distribuição da SUN para desenvolver Web Services • Provê pacotes que aumentam a segurança • Tomcat para Servidor de Servlets; • JSTL • Servidor de Registros
Java Web Services • Vantagens • Pacotes proporcionam quase nenhum contato com o XML • Portabilidade de Java • J2EE proporciona escalabilidade
Java Web Services • Ferramentas que auxiliam o desenvolvimento • Eclipse Web Tools Plataform • Stylos Studio • Altova XMLSpy
Java Web Services • Eclipse Web Tools Plataform • Proporciona um pacote completo para J2EE: Editores HTML, JSP, CSS... • Browser próprio • Ferramentas de Teste • Desvantagem: Dependencia de outros pacotes (EMF, GMF) • Não está totalmente pronto para a versão final do Eclipse 3.1
Java Web Services • Stylos Studio • Possui editores para todos estilos de XML • Possui suporte a WSDL e SOAP • Leve • Possui um pequeno suporte a Java • Porém sua interface não é muito boa
Java Web Services • Altova XML Spy • Possui editores para todos estilos de XML • Possui suporte gráfico para montagem de XMLs SOAP e HTML • Possui suporte para depuração de mensagens SOAP
Java Web Services • Conclusão: • Eclipse, por ser uma plataforma voltada para java, é a melhor opção. • XMLSpy provê um bom mecanismo de depuração baixo nível.