Universidade Salvador - UNIFACS Mestrado em Sistemas e Computação Técnicas Avançadas de Programação JME Web Services API: ...
Agenda <ul><li>Introdução a Web Services </li></ul><ul><li>JME Web Services  </li></ul><ul><li>Estudo de Caso – EduQuiz Mo...
Introdução a Web Services <ul><li>Definições </li></ul><ul><li>Software projetado para fornecer  interoperabilidade  entre...
Introdução a Web Services <ul><li>Elementos </li></ul><ul><li>- Simple Object Access Protocol (SOAP) : define o transporte...
Introdução a Web Services <ul><li>O provedor do serviço publica-o no registro de serviços, onde o solicitante do serviço i...
JME Web Services <ul><li>Java Specification Request (JSR) 172; </li></ul><ul><li>Fornece à plataforma JME o suporte a Web ...
JME Web Services <ul><li>API projetada para trabalhar com profiles JME baseados nas configurações CDC ou CLDC. </li></ul><...
Figura 2.  Arquitetura JME Web Services (ELLIS e YOUNG, 2003) Figura 3.  JME Web Services em uma típica arquitetura de WS ...
JME Web Services <ul><li>Pacote para acesso remoto a Web Services </li></ul><ul><li>É uma API Java para interação com Web ...
JME Web Services <ul><li>Requisitos </li></ul><ul><li>- Mínimo de 50KB de RAM; </li></ul><ul><li>Mínimo de 25KB de ROM; </...
JME Web Services <ul><li>Organização </li></ul>Permite o Stub executar todas as tarefas associadas com a invocação de um s...
<ul><li>O método e seu argumento são codificados, serializados e enviados, e a resposta é recebida, decodificada, e deseri...
JME Web Services <ul><li>Classes e Interfaces </li></ul>Figura 4.  Diagrama de Classes JAX-RPC no JME  (ORTIZ, 2006)
<ul><li>Passos Desenvolvimento </li></ul><ul><li>1. Gerar stubs através de um documento WSDL que descreve um web service; ...
<ul><li>Geração de stub </li></ul>JME Web Services Figura 8.  Stub Generator Figura 8.  Geração do Stub (ORTIZ, 2006)
JME Web Services <ul><li>Abstraindo o acesso aos WebServices: </li></ul><ul><ul><li>KSoap + KXML </li></ul></ul><ul><ul><l...
JME Web Services <ul><li>Abstraindo o acesso aos WebServices (KSOAP): </li></ul><ul><ul><li>Mapeamento automático de 4 tip...
JME Web Services <ul><li>Abstraindo o acesso aos WebServices (KSOAP): </li></ul><ul><ul><li>Permite Mapeamento de objetos ...
JME Web Services <ul><li>Passos Desenvolvimento </li></ul><ul><li>1) Definir o destino: </li></ul><ul><li>Namespace e méto...
<ul><li>Acessando um WebService com  </li></ul><ul><li>tipo primitivo de retorno </li></ul>
<ul><li>Exemplo: Calculadora </li></ul>Serviço executando remotamente programado em JEE.
<ul><li>Utilizando a JSR172 </li></ul>
<ul><li>Utilizando KSOAP 2 </li></ul>
<ul><li>Acessando um WebService  </li></ul><ul><li>com tipo complexo de retorno </li></ul>
<ul><li>Utilizando KSOAP 2 </li></ul>
Estudo de Caso –  EduQuiz Mobile
Estudo de Caso – EduQuiz Mobile <ul><li>Descrição da Aplicação </li></ul><ul><li>Um jogo executado no estilo perguntas  e ...
Estudo de Caso – EduQuiz Mobile <ul><li>Requisitos </li></ul><ul><li>Autenticação baseada em login e senha; </li></ul><ul>...
Estudo de Caso – EduQuiz Mobile <ul><li>Arquitetura </li></ul>Internet LAN Fornecedor do serviço + demais servidores (App,...
Estudo de Caso – EduQuiz Mobile <ul><li>Serviços </li></ul>$LOGIN;$QNT_ACERTOS[] - consultar_ranking true, false id_usuari...
Estudo de Caso – EduQuiz Mobile
Estudo de Caso – EduQuiz Mobile <ul><li>Tecnologias utilizadas </li></ul><ul><li>Cliente (Dispositivo Móvel) </li></ul><ul...
<ul><li>Demonstração </li></ul>
Considerações Finais <ul><li>Durante a pesquisa identificamos: </li></ul><ul><ul><li>Vantagens </li></ul></ul><ul><ul><ul>...
Referências <ul><li>BOOTH, David; HAAS, Hugo; McCABE, Francis; NEWCOMER, Eric; CHAMPION, Michael; Ferris, Chris; ORCHARD, ...
Upcoming SlideShare
Loading in...5
×

JME Web Services API: um estudo de caso

3,753

Published on

Introdução a Web Services, seu uso na plataforma Java MicroEdition e o estudo de caso EduQuiz Mobile.

Published in: Technology
2 Comments
0 Likes
Statistics
Notes
  • Be the first to like this

No Downloads
Views
Total Views
3,753
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
163
Comments
2
Likes
0
Embeds 0
No embeds

No notes for slide
  • JME Web Services API: um estudo de caso

    1. 1. Universidade Salvador - UNIFACS Mestrado em Sistemas e Computação Técnicas Avançadas de Programação JME Web Services API: um estudo de caso Luiz Matos Marcos Lapa dos Santos Salvador, Janeiro de 2008.
    2. 2. Agenda <ul><li>Introdução a Web Services </li></ul><ul><li>JME Web Services </li></ul><ul><li>Estudo de Caso – EduQuiz Mobile </li></ul><ul><li>Considerações Finais </li></ul><ul><li>Referências </li></ul>
    3. 3. Introdução a Web Services <ul><li>Definições </li></ul><ul><li>Software projetado para fornecer interoperabilidade entre máquinas em uma rede de computadores. ( BOOTH e outros , 2004) </li></ul><ul><li>Fornece uma interface de serviço que permite aos clientes interagirem com servidores através de um conjunto de operações . (COULOURIS e outros, 2007) </li></ul><ul><li>Padrão atual da indústria: </li></ul><ul><li>Serviços que são disponibilizados usando SOA P : uma mensagem baseada em XML que normalmente é transportada via HTTP . (ORTIZ, 2006) </li></ul>
    4. 4. Introdução a Web Services <ul><li>Elementos </li></ul><ul><li>- Simple Object Access Protocol (SOAP) : define o transporte e a codificação dos dados. </li></ul><ul><li>- Web Services Definition Language (WSDL) : define como os serviços remotos são descritos. </li></ul><ul><li>Extensible Markup Language (XML) : linguagem de marcação utilizada para troca de mensagens e como a forma de definição dos serviços . </li></ul><ul><li>- Universal Description, Discovery, Integration (UDDI) : define como os serviços remotos são descobertos. </li></ul>
    5. 5. Introdução a Web Services <ul><li>O provedor do serviço publica-o no registro de serviços, onde o solicitante do serviço irá localizá-lo. Após localizado o serviço, o solicitante efetua a chamada ao provedor daquele serviço. </li></ul>Os clientes acessam as operações na interface de um Web Service por meio de requisições e respostas formatadas em XML e, normalmente, transmitidas por HTTP. Provedor do serviço Registro de serviços Solicitante do serviço Ligar Publicar Localizar Figura 1. Arquitetura Web Services (1) (2) (3)
    6. 6. JME Web Services <ul><li>Java Specification Request (JSR) 172; </li></ul><ul><li>Fornece à plataforma JME o suporte a Web Services, através de dois pacotes independentes: </li></ul><ul><ul><li>Acesso remoto a Web Services </li></ul></ul><ul><ul><li>Define uma API que permite dispositivos móveis acessarem Web Services baseados em XML. </li></ul></ul><ul><ul><li>Parsing XML </li></ul></ul><ul><ul><li>Permite o parsing de dados em XML no dispositivo, sem a necessidade de incluir código extra para cada aplicação. </li></ul></ul>
    7. 7. JME Web Services <ul><li>API projetada para trabalhar com profiles JME baseados nas configurações CDC ou CLDC. </li></ul><ul><li>O acesso remoto a Web Services é baseado em um subconjunto da API XML-Based RPC (JAX-RPC 1.1). </li></ul><ul><li>O parsing XML é baseado em um subconjunto da Simple API for XML (SAX2). </li></ul><ul><li>Utilizam outras APIs com funcionalidades reduzidas, a fim de atender as limitações da plataforma : memória, processamento e largura de banda. </li></ul>
    8. 8. Figura 2. Arquitetura JME Web Services (ELLIS e YOUNG, 2003) Figura 3. JME Web Services em uma típica arquitetura de WS (ORTIZ, 2004)
    9. 9. JME Web Services <ul><li>Pacote para acesso remoto a Web Services </li></ul><ul><li>É uma API Java para interação com Web Services baseados em SOAP. </li></ul><ul><li>Características </li></ul><ul><li>Subconjunto das funcionalidades da API JAX-RPC 1.1; </li></ul><ul><li>Suporte a SOAP 1.1; </li></ul><ul><li>Não depende do pacote de parsing XML; </li></ul><ul><li>Fornece acesso a Web Services através de aplicações JME; </li></ul><ul><li>Não possui funcionalidades de servidor. </li></ul>
    10. 10. JME Web Services <ul><li>Requisitos </li></ul><ul><li>- Mínimo de 50KB de RAM; </li></ul><ul><li>Mínimo de 25KB de ROM; </li></ul><ul><li>Suporte a invocação baseada em Stub; </li></ul><ul><li>Mapeamento do SOAP para exceção Java ou um RemoteException; </li></ul><ul><li>Suporte a gerenciamento de sessão e autenticação HTTP. </li></ul><ul><li>Limitações </li></ul><ul><li>Não suporta mensagens com anexos; </li></ul><ul><li>Apenas consumidor; </li></ul><ul><li>Não suporta UDDI. </li></ul>
    11. 11. JME Web Services <ul><li>Organização </li></ul>Permite o Stub executar todas as tarefas associadas com a invocação de um serviço. Memória do dispositivo Stubs gerados Oculta a complexidade de tarefas como o gerenciamento de conexão e codificação dos dados. Figura 4. Organização de um aplicação baseada na JSR 172 (ORTIZ, 2004)
    12. 12. <ul><li>O método e seu argumento são codificados, serializados e enviados, e a resposta é recebida, decodificada, e deserializada de maneira transparente. </li></ul><ul><li>Suporta somente comunicação síncrona, ou seja, o cliente é bloqueado até que a resposta ou uma exceção seja recebida. </li></ul>Figura 5. Interação JAX-RPC (ORTIZ, 2006) JME Web Services <ul><li>Funcionamento </li></ul>
    13. 13. JME Web Services <ul><li>Classes e Interfaces </li></ul>Figura 4. Diagrama de Classes JAX-RPC no JME (ORTIZ, 2006)
    14. 14. <ul><li>Passos Desenvolvimento </li></ul><ul><li>1. Gerar stubs através de um documento WSDL que descreve um web service; </li></ul><ul><li>2. No código, criar uma instância do stub gerado; </li></ul><ul><li>3. Invocar os métodos do stub, tais métodos correspondem às operações do web service disponíveis no WSDL. </li></ul>JME Web Services Figura 5. Caso de uso da API JAX-RPC para JME (ORTIZ, 2006)
    15. 15. <ul><li>Geração de stub </li></ul>JME Web Services Figura 8. Stub Generator Figura 8. Geração do Stub (ORTIZ, 2006)
    16. 16. JME Web Services <ul><li>Abstraindo o acesso aos WebServices: </li></ul><ul><ul><li>KSoap + KXML </li></ul></ul><ul><ul><li>Frameworks que facilitam a vida do desenvolvedor de aplicações J2ME quando desejam acessar WebServices. </li></ul></ul><ul><ul><li>Foco em aplicações clientes de WebServices, não criam WebServices. </li></ul></ul><ul><ul><li>Projeto Open Source. </li></ul></ul>
    17. 17. JME Web Services <ul><li>Abstraindo o acesso aos WebServices (KSOAP): </li></ul><ul><ul><li>Mapeamento automático de 4 tipos primitivos do SOAP para o Java: </li></ul></ul>Figura 4. Mapeamento de Tipos (YUAN, 2002) java.lang.Boolean xsd:boolean java.lang.String xsd:string java.lang.Long xsd:long java.lang.Integer xsd:int Java type SOAP type
    18. 18. JME Web Services <ul><li>Abstraindo o acesso aos WebServices (KSOAP): </li></ul><ul><ul><li>Permite Mapeamento de objetos complexos do SOAP para o JAVA </li></ul></ul><ul><ul><li>Abstrai a estrutura do documento XML (Usando o KXML internamente). </li></ul></ul><ul><ul><li>Não requer geração de Stubs no cliente </li></ul></ul><ul><ul><li>Disponível em: http: // ksoap2.sourceforge.net </li></ul></ul>
    19. 19. JME Web Services <ul><li>Passos Desenvolvimento </li></ul><ul><li>1) Definir o destino: </li></ul><ul><li>Namespace e método </li></ul><ul><li>2) Adicionar possíveis parâmetros </li></ul><ul><li>3) Atribuir ao “envelope” </li></ul><ul><li>4) Enviar o envelope </li></ul><ul><li>5) Tratar resposta </li></ul>
    20. 20. <ul><li>Acessando um WebService com </li></ul><ul><li>tipo primitivo de retorno </li></ul>
    21. 21. <ul><li>Exemplo: Calculadora </li></ul>Serviço executando remotamente programado em JEE.
    22. 22. <ul><li>Utilizando a JSR172 </li></ul>
    23. 23. <ul><li>Utilizando KSOAP 2 </li></ul>
    24. 24. <ul><li>Acessando um WebService </li></ul><ul><li>com tipo complexo de retorno </li></ul>
    25. 25. <ul><li>Utilizando KSOAP 2 </li></ul>
    26. 26. Estudo de Caso – EduQuiz Mobile
    27. 27. Estudo de Caso – EduQuiz Mobile <ul><li>Descrição da Aplicação </li></ul><ul><li>Um jogo executado no estilo perguntas e respostas sobre computa ção. </li></ul><ul><li>A finalidade é promover uma avaliação de conhecimentos sobre determinado domínio. </li></ul><ul><li>A interface com o usuário será realizada por um dispositivo móvel, que deverá acessar as funcionalidades da aplicação através protocolo HTTP via Web Service. </li></ul>
    28. 28. Estudo de Caso – EduQuiz Mobile <ul><li>Requisitos </li></ul><ul><li>Autenticação baseada em login e senha; </li></ul><ul><li>Controle de usuário baseado em níveis (Adminstrador, Professor, Aluno); </li></ul><ul><li>Questões organizadas por assunto; </li></ul><ul><li>Limite de 3 alternativas por questão, sendo apenas 1 correta; </li></ul><ul><li>Ranking de pontuação; </li></ul>
    29. 29. Estudo de Caso – EduQuiz Mobile <ul><li>Arquitetura </li></ul>Internet LAN Fornecedor do serviço + demais servidores (App, BD , etc) EduQuiz MIDlet ClientWS Questao ut il
    30. 30. Estudo de Caso – EduQuiz Mobile <ul><li>Serviços </li></ul>$LOGIN;$QNT_ACERTOS[] - consultar_ranking true, false id_usuario, qnt_acertos gravar_acertos $ID;$DESCRICAO;$CORRETA[] id_questao obter_alternativas $ID;$DESCRICAO[] id_assunto obter_questoes $ID;$DESCRICAO[] - obter_assuntos $ID;$NOME login, senha autenticar Out In Serviço
    31. 31. Estudo de Caso – EduQuiz Mobile
    32. 32. Estudo de Caso – EduQuiz Mobile <ul><li>Tecnologias utilizadas </li></ul><ul><li>Cliente (Dispositivo Móvel) </li></ul><ul><ul><li>Java 1.6 </li></ul></ul><ul><ul><li>KSOAP 2 </li></ul></ul><ul><li>Servidor: </li></ul><ul><ul><li>PHP 5.2.4 </li></ul></ul><ul><ul><li>MySQL 5.0.45 </li></ul></ul><ul><ul><li>Apache 2.2.6 </li></ul></ul><ul><li>Ferramentas de apoio: </li></ul><ul><ul><li>NetBeans 5.5 </li></ul></ul><ul><ul><li>phpMyAdmin 2.11.1 </li></ul></ul><ul><ul><li>Java Wireless Toolkit 2.5.1 </li></ul></ul>
    33. 33. <ul><li>Demonstração </li></ul>
    34. 34. Considerações Finais <ul><li>Durante a pesquisa identificamos: </li></ul><ul><ul><li>Vantagens </li></ul></ul><ul><ul><ul><li>Facilita a codificação de clientes de WebServices frente à JSR 172. </li></ul></ul></ul><ul><ul><ul><li>Abstrai o SOAP e XML para o desenvolvedor. </li></ul></ul></ul><ul><ul><ul><li>Abstrai a criação de stubs. </li></ul></ul></ul><ul><ul><li>Problemas </li></ul></ul><ul><ul><ul><li>O acesso a WebServices feitos em .NET não é trivial (Na versão 1.0 do KSOAP não roda) </li></ul></ul></ul><ul><ul><ul><li>Falhas na geração de stubs utilizando WSDL gerado em PHP </li></ul></ul></ul>
    35. 35. Referências <ul><li>BOOTH, David; HAAS, Hugo; McCABE, Francis; NEWCOMER, Eric; CHAMPION, Michael; Ferris, Chris; ORCHARD, David. Web Services Architecture. W3C Working Group Note, 2004. Disponível em: <http://www.w3.org/TR/ws-arch/>. Acesso em: 29 nov. 2007. </li></ul><ul><li>COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Sistemas Distribuídos: conceitos e projeto. 4. ed. Porto Alegre: Bookman, 2007. </li></ul><ul><li>ELLIS, Jon; YOUNG, Mark. J2ME Web Services 1.0: final draft. Java Community Process, 2003. Disponível em: <http://www.jcp.org/aboutJava/communityprocess/final/jsr172/>. Acesso em: 25 nov. 2007. </li></ul><ul><li>GIGUERE, Eric. Service-Oriented Architecture and Java ME. Sun Developer Network, 2006. Disponível em: <http://developers.sun.com/mobility/midp/ttips/soaintro/>. Acesso em: 25 nov. 2007. </li></ul><ul><li>_______. SOA Without SOAP: the Java ME Perspective. Sun Developer Network, 2007. Disponível em: <http://developers.sun.com/mobility/midp/ttips/soanosoap/>. Acesso em: 25 nov. 2007. </li></ul><ul><li>ORTIZ, C. Enrique. Introduction to J2ME Web Services. Sun Developer Network, 2004. Disponível em: <http://developers.sun.com/mobility/apis/articles/wsa/index.html>. Acesso em: 25 nov. 2007. </li></ul><ul><li>_____. Understanding the Web Services Subset API for Java ME. Sun Developer Network, 2006. Disponível em: <http://developers.sun.com/mobility/midp/articles/webservices/>. Acesso em: 25 nov. 2007. </li></ul><ul><li>MARIN NETO, Antonio. Utilizando SOA com Webservices em JME. Disponível em: <http://www.sucesusp.org.br/mailing2007/congresso/justjava/apresentacoes/SOAJME.pdf>. Acesso em: 28 nov. 2007. </li></ul><ul><li>YUAN, M. Juntao. Access Web Services from wireless devices. Java World, 2002. Disponível em: <http://www.javaworld.com/javaworld/jw-08-2002/jw-0823-wireless.html?page=1>. Acesso em: 20 dez. 2007 </li></ul>
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×