Upload
luiz-matos
View
6.991
Download
1
Embed Size (px)
DESCRIPTION
Introdução a Web Services, seu uso na plataforma Java MicroEdition e o estudo de caso EduQuiz Mobile.
Citation preview
Universidade Salvador - UNIFACSUniversidade Salvador - UNIFACSMestrado em Sistemas e ComputaçãoMestrado em Sistemas e ComputaçãoTécnicas Avançadas de ProgramaçãoTécnicas Avançadas de Programação
JME Web Services API: um estudo de casoJME Web Services API: um estudo de caso
Luiz MatosLuiz Matos
Marcos Lapa dos SantosMarcos Lapa dos Santos
Salvador, Janeiro de 2008.Salvador, Janeiro de 2008.
AgendaAgenda
Introdução a Web ServicesIntrodução a Web Services
JME Web Services JME Web Services
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
Considerações FinaisConsiderações Finais
ReferênciasReferências
Introdução a Web ServicesIntrodução a Web Services
DefiniçõesDefinições
- Software projetado para fornecer Software projetado para fornecer interoperabilidadeinteroperabilidade entre máquinas em uma rede de computadores. entre máquinas em uma rede de computadores. ((BOOTH e outros, 2004), 2004)
- Fornece uma interface de serviço que permite aos Fornece uma interface de serviço que permite aos clientes interagirem com servidores através de um clientes interagirem com servidores através de um conjunto de operaçõesconjunto de operações. (COULOURIS e outros, 2007). (COULOURIS e outros, 2007)
- Padrão atual da indústria: Padrão atual da indústria: Serviços que são disponibilizados usando Serviços que são disponibilizados usando SOASOAPP:: uma uma mensagem baseada em mensagem baseada em XMLXML que normalmente é que normalmente é transportada via transportada via HTTPHTTP. (ORTIZ, 2006). (ORTIZ, 2006)
Introdução a Web ServicesIntrodução a Web Services
ElementosElementos
-- Simple Object Access Protocol (SOAP)Simple Object Access Protocol (SOAP): define o : define o transporte e a codificação dos dados.transporte e a codificação dos dados.
-- Web Services Definition Language (WSDL)Web Services Definition Language (WSDL): : define como os serviços remotos são descritos.define como os serviços remotos são descritos.
- Extensible Markup Language (XML)Extensible Markup Language (XML): linguagem de : linguagem de marcação marcação utilizada para troca de mensagens e como a utilizada para troca de mensagens e como a forma de definição dos serviçosforma de definição dos serviços..
-- Universal Description, Discovery, Integration Universal Description, Discovery, Integration (UDDI)(UDDI): define como os serviços remotos são : define como os serviços remotos são descobertos.descobertos.
Introdução a Web ServicesIntrodução a Web Services
O provedor do serviço publica-o no registro de serviços, O provedor do serviço publica-o no registro de serviços, onde o solicitante do serviço irá localizá-lo. Após localizado onde o solicitante do serviço irá localizá-lo. Após localizado o serviço, o solicitante efetua a chamada ao provedor o serviço, o solicitante efetua a chamada ao provedor daquele serviço.daquele serviço.
Provedor do serviço
Registro de serviços
Solicitante do serviço
LigarPublicar
Localizar
Figura 1.Figura 1. Arquitetura Web Services Arquitetura Web Services
(1)
(2)
(3)
Os clientes acessam as operações na interface de um Web Os clientes acessam as operações na interface de um Web Service por meio de requisições e respostas formatadas em Service por meio de requisições e respostas formatadas em XML e, normalmente, transmitidas por HTTP.XML e, normalmente, transmitidas por HTTP.
JME Web ServicesJME Web Services
Java Specification Request (JSR) 172;Java Specification Request (JSR) 172;
Fornece à plataforma JME o suporte a Web Services, através Fornece à plataforma JME o suporte a Web Services, através de dois pacotes independentes:de dois pacotes independentes:
• Acesso remoto a Web ServicesAcesso remoto a Web Services
Define uma API que permite dispositivos móveis Define uma API que permite dispositivos móveis acessarem Web Services baseados em XML.acessarem Web Services baseados em XML.
• Parsing XMLParsing XML
Permite o parsing de dados em XML no dispositivo, sem a Permite o parsing de dados em XML no dispositivo, sem a necessidade de incluir código extra para cada aplicação.necessidade de incluir código extra para cada aplicação.
JME Web ServicesJME Web Services
API projetada para trabalhar com profiles JME baseados API projetada para trabalhar com profiles JME baseados nas configurações CDC ou CLDC.nas configurações CDC ou CLDC.
O acesso remoto a Web Services é baseado em um O acesso remoto a Web Services é baseado em um subconjunto da API XML-Based RPC (JAX-RPC 1.1).subconjunto da API XML-Based RPC (JAX-RPC 1.1).
O parsing XML é baseado em um subconjunto da Simple O parsing XML é baseado em um subconjunto da Simple API for XML (SAX2).API for XML (SAX2).
Utilizam outras APIs com funcionalidades reduzidas, a fim Utilizam outras APIs com funcionalidades reduzidas, a fim de atender as de atender as limitações da plataformalimitações da plataforma: memória, : memória, processamento e largura de banda.processamento e largura de banda.
Figura 3. JME Web Services em uma típica arquitetura de WS (ORTIZ, 2004)
Figura 2. Arquitetura JME Web Services (ELLIS e YOUNG, 2003)
JME Web ServicesJME Web Services
Pacote para acesso remoto a Web ServicesPacote para acesso remoto a Web ServicesÉ uma API Java para interação com Web Services É uma API Java para interação com Web Services baseados em SOAP.baseados em SOAP.
CaracterísticasCaracterísticas- Subconjunto das funcionalidades da API JAX-RPC 1.1;Subconjunto das funcionalidades da API JAX-RPC 1.1;- Suporte a SOAP 1.1;Suporte a SOAP 1.1;- Não depende do pacote de parsing XML;Não depende do pacote de parsing XML;- Fornece acesso a Web Services através de aplicações Fornece acesso a Web Services através de aplicações
JME;JME;- Não possui funcionalidades de servidor.Não possui funcionalidades de servidor.
JME Web ServicesJME Web Services
RequisitosRequisitos-- Mínimo de 50KB de RAM;Mínimo de 50KB de RAM;- Mínimo de 25KB de ROM;Mínimo de 25KB de ROM;- Suporte a invocação baseada em Stub;Suporte a invocação baseada em Stub;- Mapeamento do SOAP para exceção Java ou um Mapeamento do SOAP para exceção Java ou um
RemoteException;RemoteException;- Suporte a gerenciamento de sessão e autenticação Suporte a gerenciamento de sessão e autenticação
HTTP.HTTP.
LimitaçõesLimitações- Não suporta mensagens com anexos;Não suporta mensagens com anexos;- Apenas consumidor;Apenas consumidor;- Não suporta UDDI.Não suporta UDDI.
Figura 4. Organização de um aplicação baseada na JSR 172 (ORTIZ, 2004)
JME Web ServicesJME Web Services
Permite o Stub executar todas as tarefas associadas com a invocação de um serviço.
Memória do dispositivo
OrganizaçãoOrganização
Stubs gerados
Oculta a complexidade de tarefas como o gerenciamento de conexão e codificação dos dados.
O método e seu argumento são codificados, serializados O método e seu argumento são codificados, serializados e enviados, e a resposta é recebida, decodificada, e e enviados, e a resposta é recebida, decodificada, e deserializada de maneira transparente.deserializada de maneira transparente.
Suporta somente comunicação síncrona, ou seja, o Suporta somente comunicação síncrona, ou seja, o cliente é bloqueado até que a resposta ou uma exceção cliente é bloqueado até que a resposta ou uma exceção seja recebida.seja recebida.
Figura 5. Interação JAX-RPC (ORTIZ, 2006)
JME Web ServicesJME Web Services FuncionamentoFuncionamento
Figura 4. Diagrama de Classes JAX-RPC no JME (ORTIZ, 2006)
JME Web ServicesJME Web Services
Classes e InterfacesClasses e Interfaces
Passos DesenvolvimentoPassos Desenvolvimento
1. Gerar stubs através de um 1. Gerar stubs através de um documento WSDL que descreve um documento WSDL que descreve um web service;web service;
2. No código, criar uma instância do 2. No código, criar uma instância do stub gerado;stub gerado;
3. Invocar os métodos do stub, tais 3. Invocar os métodos do stub, tais métodos correspondem às métodos correspondem às operações do web service operações do web service disponíveis no WSDL.disponíveis no WSDL.
JME Web ServicesJME Web Services
Figura 5. Caso de uso da API JAX-RPC para JME (ORTIZ, 2006)
Geração de stubGeração de stub
Figura 8. Stub Generator
JME Web ServicesJME Web Services
Figura 8. Geração do Stub (ORTIZ, 2006)
JME Web ServicesJME Web Services
Abstraindo o acesso aos WebServices:Abstraindo o acesso aos WebServices:
• KSoap + KXMLKSoap + KXML
• Frameworks que facilitam a vida do desenvolvedor Frameworks que facilitam a vida do desenvolvedor de aplicações J2ME quando desejam acessar de aplicações J2ME quando desejam acessar WebServices.WebServices.
• Foco em aplicações clientes de WebServices, não Foco em aplicações clientes de WebServices, não criam WebServices.criam WebServices.
• Projeto Open Source.Projeto Open Source.
JME Web ServicesJME Web Services
Abstraindo o acesso aos WebServices Abstraindo o acesso aos WebServices (KSOAP):(KSOAP):
• Mapeamento automático de 4 tipos primitivos do Mapeamento automático de 4 tipos primitivos do SOAP para o Java:SOAP para o Java:
SOAP type Java type
xsd:int java.lang.Integer
xsd:long java.lang.Long
xsd:string java.lang.String
xsd:booleanjava.lang.BooleanFigura 4. Mapeamento de Tipos (YUAN, 2002)
JME Web ServicesJME Web Services
Abstraindo o acesso aos WebServices (KSOAP):Abstraindo o acesso aos WebServices (KSOAP):
• Permite Mapeamento de objetos complexos do SOAP Permite Mapeamento de objetos complexos do SOAP para o JAVApara o JAVA
• Abstrai a estrutura do documento XML (Usando o Abstrai a estrutura do documento XML (Usando o KXML internamente).KXML internamente).
• Não requer geração de Stubs no clienteNão requer geração de Stubs no cliente
• Disponível em: http:Disponível em: http:////ksoap2.sourceforge.netksoap2.sourceforge.net
JME Web ServicesJME Web Services
Passos DesenvolvimentoPassos Desenvolvimento
1) Definir o destino:1) Definir o destino:
Namespace e métodoNamespace e método
2) Adicionar possíveis parâmetros2) Adicionar possíveis parâmetros
3) Atribuir ao “envelope”3) Atribuir ao “envelope”
4) Enviar o envelope4) Enviar o envelope
5) Tratar resposta5) Tratar resposta
Acessando um WebService com Acessando um WebService com
tipo primitivo de retornotipo primitivo de retorno
Exemplo: CalculadoraExemplo: Calculadora
Serviço executando remotamente programado em JEE.Serviço executando remotamente programado em JEE.
Utilizando a JSR172Utilizando a JSR172
Utilizando KSOAP 2Utilizando KSOAP 2
Acessando um WebService Acessando um WebService
com tipo complexo de retornocom tipo complexo de retorno
Utilizando KSOAP 2Utilizando KSOAP 2
Estudo de Caso – Estudo de Caso – EduQuiz MobileEduQuiz Mobile
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
Descrição da AplicaçãoDescrição da Aplicação
Um jogo executado no estilo perguntasUm jogo executado no estilo perguntas e respostas e respostas sobre computasobre computação. ção.
A finalidade é promover uma avaliação de A finalidade é promover uma avaliação de conhecimentos sobre determinado domínio.conhecimentos sobre determinado domínio.
A interface com o usuário será realizada por um A interface com o usuário será realizada por um dispositivo móvel, que deverá acessar as dispositivo móvel, que deverá acessar as funcionalidades da aplicação através protocolo HTTP funcionalidades da aplicação através protocolo HTTP via Web Service.via Web Service.
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
RequisitosRequisitos- Autenticação baseada em login e senha;Autenticação baseada em login e senha;- Controle de usuário baseado em níveis (Adminstrador, Controle de usuário baseado em níveis (Adminstrador,
Professor, Aluno);Professor, Aluno);- Questões organizadas por assunto;Questões organizadas por assunto;- Limite de 3 alternativas por questão, sendo apenas 1 Limite de 3 alternativas por questão, sendo apenas 1
correta;correta;- Ranking de pontuação;Ranking de pontuação;
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
ArquiteturaArquitetura
EduQuiz MIDlet
ClientWS Questao
ut
il
InternetLAN
Fornecedor do serviço + demais servidores (App, BD, etc)
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
ServiçosServiços
ServiçoServiço InIn OutOut
autenticarautenticar login, senhalogin, senha $ID;$NOME$ID;$NOME
obter_assuntosobter_assuntos -- $ID;$DESCRICAO[]$ID;$DESCRICAO[]
obter_questoesobter_questoes id_assuntoid_assunto $ID;$DESCRICAO[]$ID;$DESCRICAO[]
obter_alternativasobter_alternativas id_questaoid_questao $ID;$DESCRICAO;$CORRETA[]$ID;$DESCRICAO;$CORRETA[]
gravar_acertosgravar_acertos id_usuario, id_usuario, qnt_acertosqnt_acertos
true, falsetrue, false
consultar_rankingconsultar_ranking -- $LOGIN;$QNT_ACERTOS[]$LOGIN;$QNT_ACERTOS[]
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
Estudo de Caso – EduQuiz MobileEstudo de Caso – EduQuiz Mobile
Tecnologias utilizadasTecnologias utilizadasCliente (Dispositivo Móvel)Cliente (Dispositivo Móvel)
Java 1.6Java 1.6KSOAP 2KSOAP 2
Servidor:Servidor:PHP PHP 5.2.4MySQL 5.0.45 MySQL 5.0.45 Apache 2.2.6Apache 2.2.6
Ferramentas de apoio:Ferramentas de apoio:NetBeans 5.5NetBeans 5.5phpMyAdmin 2.11.1phpMyAdmin 2.11.1Java Wireless Toolkit 2.5.1Java Wireless Toolkit 2.5.1
DemonstraçãoDemonstração
Considerações FinaisConsiderações Finais
Durante a pesquisa identificamos:Durante a pesquisa identificamos:
VantagensVantagens Facilita a codificação de clientes de WebServices Facilita a codificação de clientes de WebServices
frente à JSR 172.frente à JSR 172. Abstrai o SOAP e XML para o desenvolvedor.Abstrai o SOAP e XML para o desenvolvedor. Abstrai a criação de stubs.Abstrai a criação de stubs.
ProblemasProblemas O acesso a WebServices feitos em .NET não é O acesso a WebServices feitos em .NET não é
trivial (Na versão 1.0 do KSOAP não roda)trivial (Na versão 1.0 do KSOAP não roda) Falhas na geração de stubs utilizando WSDL Falhas na geração de stubs utilizando WSDL
gerado em PHPgerado em PHP
ReferênciasReferências
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.
COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Sistemas Distribuídos: conceitos e projeto. 4. ed. Porto Alegre: Bookman, 2007.
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.
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.
_______. 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.
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.
_____. 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.
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.
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