Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
UNIVERSIDADE DE ARARAQUARA - UNIARA DEPARTAMENTO DE CIEcircNCIAS DA
ADMINISTRACcedilAtildeO E TECNOLOGIA
ENGENHARIA DE COMPUTACcedilAtildeO
EDUARDO DE SANTANA DA SILVA
INTEGRACcedilAtildeO DE SISTEMAS LEGADOS E MOBILE UTILIZANDO
UMA API RESTFUL
ARARAQUARA 2016
EDUARDO DE SANTANA DA SILVA
INTEGRACcedilAtildeO DE SISTEMAS LEGADOS E MOBILE UTILIZANDO
UMA API RESTFUL
ARARAQUARA 2016
Trabalho de Conclusatildeo de Curso
apresentado ao Departamento de Ciecircncias
da Administraccedilatildeo e Tecnologia da
Universidade de Araraquara UNIARA
como exigecircncia para obtenccedilatildeo do tiacutetulo de
Bacharel em Engenharia de Computaccedilatildeo
Orientador Prof Dr Joatildeo Henrique Giatildeo
Borges
LISTA DE FIGURAS
Figura 1 - Representaccedilatildeo de um objeto JSON 10
Figura 2 - Configuraccedilatildeo do arquivo webxml13
Figura 3 - Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API 14
Figura 4 - Dependecircncia da biblioteca GraphView que foi adicionada ao projeto15
Figura 5 - Telas da aplicaccedilatildeo mobile16
Figura 6 - Classe assiacutencrona geneacuterica responsaacutevel por consumir o Web Service17
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo 18
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado 19
Figura 9 - Graacutefico obtido na requisiccedilatildeo 19
Figura 10 - Informaccedilotildees detalhadas da Seacuterie 20
SUMAacuteRIO
1 INTRODUCcedilAtildeO 1
11 Apresentaccedilatildeo do Tema1
12 Objetivo1
13 justificativa2
14 Problema e Hipoacutetese 3
15Metodologia3
2 REVISAtildeO BIBLIOGRAacuteFICA4
21 SOA (Service Oriented Architecture) 4
212 Web Services5
213 Android5
214 REST (Representational State Transfer) 6
22 HTTP7
221 Meacutetodos HTTP7
222 Coacutedigo de Status8
215 JSON 10
216 Apache Tomcat11
217 JERSEY11
218 ERP11
219 JAVA12
3 DESENVOLVIMENTO DO PROJETO12
311 Desenvolvimento do Web Service12
312 Recursos14
313 Aplicaccedilatildeo Mobile15
314 Graacuteficos15
315 Activitys16
316 Requisiccedilotildees ao Web Service16
4 CONCLUSAtildeO20
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS21
RESUMO
Devido ao grande poder de processamento de smartphones e tablets e a facilidade
de se manter conectado agrave internet por wi-fi ou tecnologias de dados moacuteveis os
dispositivos moacuteveis se tornaram uma ferramenta importante para diversas empresas
Eacute possiacutevel utilizar os diversos recursos do dispositivo para enviar e receber dados a
todo momento e empresas vem realizando a integraccedilatildeo de sistemas mobile aos seus
ERPs para assim agilizar seus processos Para realizar a integraccedilatildeo de aplicaccedilotildees de
plataformas distintas podem ser utilizados Web Services que disponibilizam recursos
para que outras aplicaccedilotildees possam ser facilmente integradas Este trabalho apresenta
o desenvolvimento de uma API JAVA com classes e interfaces que mapeiam os
conceitos baacutesicos de serviccedilos web baseados em Rest A estrutura da API facilita o
trabalho com diferentes propostas de arquiteturas Rest aleacutem disso a API visa facilitar
o trabalho de desenvolvimento de uma aplicaccedilatildeo Android que se comunique com um
servidor Rest natildeo sendo necessaacuterio que o desenvolvedor preocupe-se com o
desenvolvimento de classes de comunicaccedilatildeo com o Web Service tampouco classes
que realizem o a serializaccedilatildeo e deserializaccedilatildeo de dados A aplicaccedilatildeo mobile consome
o Web Service atraveacutes de requisiccedilotildees REST obtendo o retorno em JSON e
serializando para um objeto preacute-definido
Palavras-chave API Restful Web Services Android
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
EDUARDO DE SANTANA DA SILVA
INTEGRACcedilAtildeO DE SISTEMAS LEGADOS E MOBILE UTILIZANDO
UMA API RESTFUL
ARARAQUARA 2016
Trabalho de Conclusatildeo de Curso
apresentado ao Departamento de Ciecircncias
da Administraccedilatildeo e Tecnologia da
Universidade de Araraquara UNIARA
como exigecircncia para obtenccedilatildeo do tiacutetulo de
Bacharel em Engenharia de Computaccedilatildeo
Orientador Prof Dr Joatildeo Henrique Giatildeo
Borges
LISTA DE FIGURAS
Figura 1 - Representaccedilatildeo de um objeto JSON 10
Figura 2 - Configuraccedilatildeo do arquivo webxml13
Figura 3 - Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API 14
Figura 4 - Dependecircncia da biblioteca GraphView que foi adicionada ao projeto15
Figura 5 - Telas da aplicaccedilatildeo mobile16
Figura 6 - Classe assiacutencrona geneacuterica responsaacutevel por consumir o Web Service17
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo 18
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado 19
Figura 9 - Graacutefico obtido na requisiccedilatildeo 19
Figura 10 - Informaccedilotildees detalhadas da Seacuterie 20
SUMAacuteRIO
1 INTRODUCcedilAtildeO 1
11 Apresentaccedilatildeo do Tema1
12 Objetivo1
13 justificativa2
14 Problema e Hipoacutetese 3
15Metodologia3
2 REVISAtildeO BIBLIOGRAacuteFICA4
21 SOA (Service Oriented Architecture) 4
212 Web Services5
213 Android5
214 REST (Representational State Transfer) 6
22 HTTP7
221 Meacutetodos HTTP7
222 Coacutedigo de Status8
215 JSON 10
216 Apache Tomcat11
217 JERSEY11
218 ERP11
219 JAVA12
3 DESENVOLVIMENTO DO PROJETO12
311 Desenvolvimento do Web Service12
312 Recursos14
313 Aplicaccedilatildeo Mobile15
314 Graacuteficos15
315 Activitys16
316 Requisiccedilotildees ao Web Service16
4 CONCLUSAtildeO20
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS21
RESUMO
Devido ao grande poder de processamento de smartphones e tablets e a facilidade
de se manter conectado agrave internet por wi-fi ou tecnologias de dados moacuteveis os
dispositivos moacuteveis se tornaram uma ferramenta importante para diversas empresas
Eacute possiacutevel utilizar os diversos recursos do dispositivo para enviar e receber dados a
todo momento e empresas vem realizando a integraccedilatildeo de sistemas mobile aos seus
ERPs para assim agilizar seus processos Para realizar a integraccedilatildeo de aplicaccedilotildees de
plataformas distintas podem ser utilizados Web Services que disponibilizam recursos
para que outras aplicaccedilotildees possam ser facilmente integradas Este trabalho apresenta
o desenvolvimento de uma API JAVA com classes e interfaces que mapeiam os
conceitos baacutesicos de serviccedilos web baseados em Rest A estrutura da API facilita o
trabalho com diferentes propostas de arquiteturas Rest aleacutem disso a API visa facilitar
o trabalho de desenvolvimento de uma aplicaccedilatildeo Android que se comunique com um
servidor Rest natildeo sendo necessaacuterio que o desenvolvedor preocupe-se com o
desenvolvimento de classes de comunicaccedilatildeo com o Web Service tampouco classes
que realizem o a serializaccedilatildeo e deserializaccedilatildeo de dados A aplicaccedilatildeo mobile consome
o Web Service atraveacutes de requisiccedilotildees REST obtendo o retorno em JSON e
serializando para um objeto preacute-definido
Palavras-chave API Restful Web Services Android
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
LISTA DE FIGURAS
Figura 1 - Representaccedilatildeo de um objeto JSON 10
Figura 2 - Configuraccedilatildeo do arquivo webxml13
Figura 3 - Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API 14
Figura 4 - Dependecircncia da biblioteca GraphView que foi adicionada ao projeto15
Figura 5 - Telas da aplicaccedilatildeo mobile16
Figura 6 - Classe assiacutencrona geneacuterica responsaacutevel por consumir o Web Service17
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo 18
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado 19
Figura 9 - Graacutefico obtido na requisiccedilatildeo 19
Figura 10 - Informaccedilotildees detalhadas da Seacuterie 20
SUMAacuteRIO
1 INTRODUCcedilAtildeO 1
11 Apresentaccedilatildeo do Tema1
12 Objetivo1
13 justificativa2
14 Problema e Hipoacutetese 3
15Metodologia3
2 REVISAtildeO BIBLIOGRAacuteFICA4
21 SOA (Service Oriented Architecture) 4
212 Web Services5
213 Android5
214 REST (Representational State Transfer) 6
22 HTTP7
221 Meacutetodos HTTP7
222 Coacutedigo de Status8
215 JSON 10
216 Apache Tomcat11
217 JERSEY11
218 ERP11
219 JAVA12
3 DESENVOLVIMENTO DO PROJETO12
311 Desenvolvimento do Web Service12
312 Recursos14
313 Aplicaccedilatildeo Mobile15
314 Graacuteficos15
315 Activitys16
316 Requisiccedilotildees ao Web Service16
4 CONCLUSAtildeO20
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS21
RESUMO
Devido ao grande poder de processamento de smartphones e tablets e a facilidade
de se manter conectado agrave internet por wi-fi ou tecnologias de dados moacuteveis os
dispositivos moacuteveis se tornaram uma ferramenta importante para diversas empresas
Eacute possiacutevel utilizar os diversos recursos do dispositivo para enviar e receber dados a
todo momento e empresas vem realizando a integraccedilatildeo de sistemas mobile aos seus
ERPs para assim agilizar seus processos Para realizar a integraccedilatildeo de aplicaccedilotildees de
plataformas distintas podem ser utilizados Web Services que disponibilizam recursos
para que outras aplicaccedilotildees possam ser facilmente integradas Este trabalho apresenta
o desenvolvimento de uma API JAVA com classes e interfaces que mapeiam os
conceitos baacutesicos de serviccedilos web baseados em Rest A estrutura da API facilita o
trabalho com diferentes propostas de arquiteturas Rest aleacutem disso a API visa facilitar
o trabalho de desenvolvimento de uma aplicaccedilatildeo Android que se comunique com um
servidor Rest natildeo sendo necessaacuterio que o desenvolvedor preocupe-se com o
desenvolvimento de classes de comunicaccedilatildeo com o Web Service tampouco classes
que realizem o a serializaccedilatildeo e deserializaccedilatildeo de dados A aplicaccedilatildeo mobile consome
o Web Service atraveacutes de requisiccedilotildees REST obtendo o retorno em JSON e
serializando para um objeto preacute-definido
Palavras-chave API Restful Web Services Android
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
SUMAacuteRIO
1 INTRODUCcedilAtildeO 1
11 Apresentaccedilatildeo do Tema1
12 Objetivo1
13 justificativa2
14 Problema e Hipoacutetese 3
15Metodologia3
2 REVISAtildeO BIBLIOGRAacuteFICA4
21 SOA (Service Oriented Architecture) 4
212 Web Services5
213 Android5
214 REST (Representational State Transfer) 6
22 HTTP7
221 Meacutetodos HTTP7
222 Coacutedigo de Status8
215 JSON 10
216 Apache Tomcat11
217 JERSEY11
218 ERP11
219 JAVA12
3 DESENVOLVIMENTO DO PROJETO12
311 Desenvolvimento do Web Service12
312 Recursos14
313 Aplicaccedilatildeo Mobile15
314 Graacuteficos15
315 Activitys16
316 Requisiccedilotildees ao Web Service16
4 CONCLUSAtildeO20
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS21
RESUMO
Devido ao grande poder de processamento de smartphones e tablets e a facilidade
de se manter conectado agrave internet por wi-fi ou tecnologias de dados moacuteveis os
dispositivos moacuteveis se tornaram uma ferramenta importante para diversas empresas
Eacute possiacutevel utilizar os diversos recursos do dispositivo para enviar e receber dados a
todo momento e empresas vem realizando a integraccedilatildeo de sistemas mobile aos seus
ERPs para assim agilizar seus processos Para realizar a integraccedilatildeo de aplicaccedilotildees de
plataformas distintas podem ser utilizados Web Services que disponibilizam recursos
para que outras aplicaccedilotildees possam ser facilmente integradas Este trabalho apresenta
o desenvolvimento de uma API JAVA com classes e interfaces que mapeiam os
conceitos baacutesicos de serviccedilos web baseados em Rest A estrutura da API facilita o
trabalho com diferentes propostas de arquiteturas Rest aleacutem disso a API visa facilitar
o trabalho de desenvolvimento de uma aplicaccedilatildeo Android que se comunique com um
servidor Rest natildeo sendo necessaacuterio que o desenvolvedor preocupe-se com o
desenvolvimento de classes de comunicaccedilatildeo com o Web Service tampouco classes
que realizem o a serializaccedilatildeo e deserializaccedilatildeo de dados A aplicaccedilatildeo mobile consome
o Web Service atraveacutes de requisiccedilotildees REST obtendo o retorno em JSON e
serializando para um objeto preacute-definido
Palavras-chave API Restful Web Services Android
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
RESUMO
Devido ao grande poder de processamento de smartphones e tablets e a facilidade
de se manter conectado agrave internet por wi-fi ou tecnologias de dados moacuteveis os
dispositivos moacuteveis se tornaram uma ferramenta importante para diversas empresas
Eacute possiacutevel utilizar os diversos recursos do dispositivo para enviar e receber dados a
todo momento e empresas vem realizando a integraccedilatildeo de sistemas mobile aos seus
ERPs para assim agilizar seus processos Para realizar a integraccedilatildeo de aplicaccedilotildees de
plataformas distintas podem ser utilizados Web Services que disponibilizam recursos
para que outras aplicaccedilotildees possam ser facilmente integradas Este trabalho apresenta
o desenvolvimento de uma API JAVA com classes e interfaces que mapeiam os
conceitos baacutesicos de serviccedilos web baseados em Rest A estrutura da API facilita o
trabalho com diferentes propostas de arquiteturas Rest aleacutem disso a API visa facilitar
o trabalho de desenvolvimento de uma aplicaccedilatildeo Android que se comunique com um
servidor Rest natildeo sendo necessaacuterio que o desenvolvedor preocupe-se com o
desenvolvimento de classes de comunicaccedilatildeo com o Web Service tampouco classes
que realizem o a serializaccedilatildeo e deserializaccedilatildeo de dados A aplicaccedilatildeo mobile consome
o Web Service atraveacutes de requisiccedilotildees REST obtendo o retorno em JSON e
serializando para um objeto preacute-definido
Palavras-chave API Restful Web Services Android
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
ABSTRACT
Due to the great power of smartphones and tablets processing and the ease of staying
connected to the internet by wi-fi or 3G mobile devices have become indispensable
for many companies It can use the various features of the device to send and receive
data at all times companies have used the integration of mobile systems to their ERP
to thereby streamline its processes To enable the integration of heterogeneous
applications are used Web services that provide resources so that other applications
can be easily integrated This paper presents the development of an API with Java
classes and interfaces that map the basics of web-based services Rest is not
necessary that the developer worry with the development of classes that communicate
with the Web service either classes that perform the marshall and unmarshall data
The structure of API developed makes working with different proposals for Rest
architectures in addition to API aims to facilitate the development work of an Android
application that communicates with a server Rest
Keywords API Restful Web Services Android
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
1
1 INTRODUCcedilAtildeO
11 APRESENTACcedilAtildeO DO TEMA
A computaccedilatildeo moacutevel foi criada com a finalidade de permitir que seus usuaacuterios
se mantenham conectados a todo o momento tal como faria em um computador
pessoal poreacutem tendo a flexibilidade de transportar o dispositivo para qualquer lugar
Essa tecnologia se popularizou com a chegada da internet moacutevel (3G 4G e Wi-Fi) do
aumento da quantidade de memoacuteria RAM e das novas arquiteturas de processador
que possibilitaram maior desempenho e consequentemente a construccedilatildeo de
aplicaccedilotildees mais elaboradas (MAURIacuteCIO e NAKAMURA 2003)
A grande popularizaccedilatildeo dos sistemas operacionais Android IOS e Windows
Phone e o aumento de planos de telefonia acessiacuteveis despertou no ramo empresarial
o interesse em explorar essas novas tecnologias visando disponibilizar seus produtos
e serviccedilos nos novos aparelhos celulares Pois utilizar esse tipo de tecnologia nos
negoacutecios possibilita ter informaccedilatildeo sempre agrave matildeo aonde quer que esteja para
consultar quando quiser
Utilizando uma arquitetura orientada a serviccedilos eacute possiacutevel desenvolver pontos
de acesso para que aplicaccedilotildees moacuteveis possam se comunicar consumir recursos e
atualizar informaccedilotildees em sistemas legados No entanto muitas vezes eacute necessaacuterio
realizar a integraccedilatildeo entre softwares distintos escritos em linguagens diferentes e
sendo executados em plataformas diferentes que devem ser capazes de se
comunicarem e trocarem informaccedilotildees para assim atingir os objetivos desejados
12 OBJETIVOS
Este trabalho objetivou realizar a integraccedilatildeo de um aplicativo mobile com um
sistema legado a fim de disponibilizar as informaccedilotildees em uma aplicaccedilatildeo atraveacutes de
um aplicativo Android utilizando uma arquitetura orientada a serviccedilos
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
2
13 JUSTIFICATIVA
De acordo com IDC (International Data Corporation) o mercado de
smartphones em todo o mundo cresceu 130 em 2015 com 3415 milhotildees de
embarques o Android domina o mercado com uma quota de 828 em relaccedilatildeo aos
outros sistemas operacionais para Smartphones em 2015
Tabela 1 - Participaccedilatildeo dos Sistemas Operacionais no mercado
Periacuteodo Android iOS Windows
Phone BlackBerry
OS Outros
2015 828 139 26 03 04
2014 848 116 25 05 07
2013 798 129 34 28 12
2012 693 166 31 49 61
Fonte IDC Agosto de 2015
A plataforma Android foi escolhida para fazer essa integraccedilatildeo pois ela possui
algumas vantagens em relaccedilatildeo a outras plataformas como ser gratuita natildeo eacute preciso
comprar ferramentas de desenvolvimento APIS ou algum tipo de software para poder
desenvolver uma aplicaccedilatildeo Estas informaccedilotildees ressaltam a importacircncia de se estudar
o tema abordado
Segundo Saudate a utilizaccedilatildeo de Web Services tradicionais como o SOAP
(Simple Object Access Protocol) natildeo apresenta um bom desempenho em aplicaccedilotildees
moacuteveis pois estes tipos de Web Services satildeo baseados em trocas de XML para
este cenaacuterio isto seria muito custoso pois existe um consumo de banda elevada Na
maioria das vezes os usuaacuterios natildeo estaratildeo conectados a uma rede Wi-Fi assim
dependendo da utilizaccedilatildeo de uma rede moacutevel A arquitetura REST foi escolhida por
ser mais sucinta e menos verbosa aleacutem de possuir vantagens para o
desenvolvimento
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
3
14 PROBLEMA E HIPOacuteTESE
Nos dias atuais uma tomada de decisatildeo em tempo haacutebil eacute um diferencial para
uma organizaccedilatildeo contudo existem limitaccedilotildees quando se trata do assunto eacute preciso
que responsaacutevel por anaacutelises dos dados da organizaccedilatildeo tenha acesso a um
computador ou a documentos impressos
Para resolver o problema seraacute realizada uma engenharia reversa do modelo de dados
convencional seguido de um acesso direto a base de dados por um componente de
software que expotildee as informaccedilotildees atraveacutes de uma API que utiliza o padratildeo RESTful
sobre o protocolo HTTP e um aplicativo desenvolvido para executar especificamente
em sistemas operacionais Android que obteacutem as informaccedilotildees atraveacutes da API exposta
pelo componente Os dados obtidos seratildeo exibidos na aplicaccedilatildeo Android atraveacutes de
dashboards graacuteficos e relatoacuterios
15 METODOLOGIA
Inicialmente foi realizada uma anaacutelise junto aos usuaacuterios ligados ao
departamento de inteligecircncia de mercado para verificar as necessidades do projeto e
definir seu escopo O sistema ERP tem seus dados armazenados em uma base de
dados Microsoft SQL Server 2008 Foram estudadas as tecnologias utilizadas para o
desenvolvimento de um Web Service para este caso foi escolhido a IDE Eclipse Java
EE IDE for Web Developers e um aplicativo para ser executado no sistema
operacional Android O aplicativo foi desenvolvido na linguagem de programaccedilatildeo
Java utilizando a IDE Android Studio ferramenta que eacute disponibilizada gratuitamente
pela Google Em seguida foi escolhido o servidor hospedaria a API o servidor
escolhido foi o APACHE TOMCAT 70 este disponibilizado pela Apache Software
Fundation e distribuiacutedo sobre a licenccedila de software livre
A API possui meacutetodos que quando consumidos retornam os recursos solicitados Para
obter as informaccedilotildees da base de dados Microsoft SQL Server eacute realizado um acesso
direto da API As informaccedilotildees obtidas pela API seratildeo consistidas em uma camada de
negoacutecios Na aplicaccedilatildeo android os recursos que foram obtidos atraveacutes do consumo
da API seratildeo expostos aos usuaacuterios atraveacutes de graacuteficos e dashboards Foram
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
4
realizadas pesquisas embasadas em leitura de artigos endereccedilos eletrocircnicos e livros
que colaboraram para o enriquecimento teoacuterico e praacutetico do tema abordado
2 REVISAtildeO BIBLIOGRAacuteFICA
21 SOA (Service Oriented Architecture)
De acordo com GEORGAKOPOULOS e PAPAZOGLOU (2008) a Arquitetura
Orientada a Serviccedilos eacute um paradigma quem propotildee a interoperabilidade e o fraco
acoplamento entre elementos baacutesicos de software (serviccedilos) Sua definiccedilatildeo emprega
a utilizaccedilatildeo de interfaces neutras e a utilizaccedilatildeo de protocolos de transporte
padronizados Serviccedilos satildeo unidades loacutegicas de software que encapsulam um meacutetodo
ou ateacute mesmo um grande processo que envolve vaacuterios colaboradores Em outras
palavras um serviccedilo pode ser subentendido por componentes abertos auto
descritiacuteveis que suportam a integraccedilatildeo de aplicaccedilotildees distribuiacutedas de forma raacutepida e
com baixo custo
Serviccedilos devem utilizar um protocolo padratildeo e aberto para comunicaccedilatildeo por
exemplo o HTTP disponibilizando uma infraestrutura de computaccedilatildeo distribuiacuteda que
possibilite a utilizaccedilatildeo de seus serviccedilos tanto dentro como entre empresas (intra-
enterprise e cross-enterprise respectivamente) Um serviccedilo deve ter uma interface de
comunicaccedilatildeo que forneccedila a assinatura do serviccedilo (paracircmetros de entrada saiacuteda erro
e tipos de mensagens) Serviccedilos satildeo descritos por fluxogramas Resumidamente um
serviccedilo eacute um componente de software que expotildees recursos para clientes atraveacutes de
interfaces (contratos) bem definidas Um serviccedilo eacute um recurso abstrato que possui a
capacidade de realizar tarefas que representam uma funcionalidade do ponto de vista
de entidades provedoras e entidades requisitoras (PAPAZOGLOU MIKE amp
GEORGAKOPOULOS DIMITRIS 2008)
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
5
212 Web Services
Segundo (W3C 2004) um serviccedilo web eacute um sistema de software desenvolvido
para suportar iteraccedilotildees maacutequina-maacutequina interoperaacuteveis sobre uma rede O serviccedilo
web implementa uma interface descrita em um formato que a maacutequina pode
processar especificamente o WSDL (Web Service Description Language)
possibilitando a iteraccedilatildeo de outros sistemas utilizando o contrato prescrito no
documento WSDL utilizando mensagens SOAP (Simple Object Access Protocol)
frequentemente transportadas usando o HTTP (HiperText Transfer Protocol) com
serializaccedilatildeo XML (Extensible Markup Language)
213 Android
Desenvolvido especialmente para dispositivos moacuteveis como aparelhos
celulares e tablets o Android eacute uma plataforma composta de um sistema operacional
middlewares e um conjunto de aplicativos principais como os Contatos Navegador de
Internet e o Telefone propriamente dito (MONTEIRO 2012)
Baseado no kernel do Linux o Android comeccedilou a ser desenvolvido em 2003 pela
empresa Android Inc Em 2005 a empresa foi comprada pela Google Um
acontecimento importante ocorreu em 2007 com a criaccedilatildeo da Open Handset Alliance
que eacute uma organizaccedilatildeo de empresas de software hardware e telecomunicaccedilotildees no
qual a missatildeo eacute desenvolver uma plataforma para dispositivos moacuteveis que seja
completa aberta e gratuita O Android eacute Open Source (coacutedigo aberto) Isso permite
que qualquer um tenha acesso ao coacutedigo-fonte e possa contribuir com o projeto
Android
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
6
214 REST (Representational State Transfer)
Segundo SAUDATE (2013) o REST eacute uma arquitetura de Web Services que
foi desenvolvida em uma tese de doutorado de Roy Filding co-autor do protocolo
HTTP O REST utiliza os meacutetodos do protocolo HTTP utilizando das boas praacuteticas
dessa tecnologia para garantir a comunicaccedilatildeo entre os recursos da aplicaccedilatildeo
Uma das caracteriacutesticas do Rest eacute possuir uma uacutenica URL (Universal Resource
Locator) para acesso dos recursos em Rest todo endereccedilamento eacute gerenciado pelo
uso de URIs (Universal Resource Identifier) toda requisiccedilatildeo deve conter a URI do
objeto que se estaacute solicitando a informaccedilatildeo Para definir qual meacutetodo a aplicaccedilatildeo
deveraacute executar eacute necessaacuterio que seja enviado no cabeccedilalho da solicitaccedilatildeo o tipo de
requisiccedilatildeo realizada que podem ser
GET O meacutetodo eacute uma operaccedilatildeo apenas de leitura que obteacutem informaccedilotildees de
um determinado recurso caso informado algum paracircmetro de consulta
retornaraacute as informaccedilotildees filtradas
PUT O meacutetodo eacute utilizado para atualizar informaccedilotildees de um recurso no
servidor
POST O meacutetodo eacute utilizado para criar um recurso
DELETE Executa o meacutetodo para remover um recurso
O Rest possibilita que informaccedilotildees sejam obtidas em XML ou JSON sendo que o uso
de cada uma deve ser estudado e definido de acordo com a necessidade do ambiente
(SAUDATE 2013)
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
7
22 HTTP
O protocolo HTTP (HyperText Transfer Protocol - Protocolo de Transferecircncia
de Hi-pertexto) surgiu em 1996 apoacutes um trabalho em conjunto de Roy Fielding e Henrik
Frystyk Nielsen tal trabalho levou os autores a publicarem uma RCF (Request for
Comments) onde o protocolo eacute descrito e documentado O HTTP eacute um protocolo de
camada de aplicaccedilatildeo (baseado no modelo OSI) (SAUDATE 2013)
O protocolo HTTP possui um modelo simples consiste-se basicamente em um
modelo de requisiccedilotildees (request) e respostas (response) O cliente estabelece uma
conexatildeo com o servidor realiza uma requisiccedilatildeo em seguida recebe uma resposta do
servidor No protocolo existem dois tipos de mensagens definidas uma representa as
requisiccedilotildees do lado do cliente e a outra as respostas do lado do servidor ambas
seguem padrotildees definidos pelo protocolo
Uma requisiccedilatildeo HTTP conteacutem um ou mais cabeccedilalhos As requisiccedilotildees HTTP
esperam o retorno de documentos HTML XML ou JSON do servidor Estes
documentos satildeo compactados natildeo sofrem nenhum tipo de tratamento ao serem
enviados do servidor para o cliente tornando o HTTP viaacutevel em termos de consumo
de banda (TORRES Gabriel Redes de Computadores 2014)
221 Meacutetodos HTTP
bull GET
bull POST
bull PUT
bull DELETE
bull OPTIONS
bull HEAD
bull TRACE
bull CONNECT
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
8
222 Coacutedigo de Status
As requisiccedilotildees enviadas para o servidor retornam um coacutedigo de status Esses
Coacutedigos satildeo divididos em cinco famiacutelias 1xx 2xx 3xx 4xx e 5xx sendo
bull 1xx ndash Informacionais
bull 2xx - Coacutedigos de sucesso
bull 3xx - Coacutedigos de redirecionamento
bull 4xx - Erros causados pelo cliente
bull 5xx - Erros originados no servidor
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
9
Tabela 2 ndash Coacutedigo de Status HTTP por Famiacutelia
Famiacutelia Status-Coacutedigo Descriccedilatildeo
1x
100 Continue
101 Switching Protocols 2x
200 OK
201 Created
202 Accepted
203 Non-Authoritative Information
204 No Content
205 Reset Content
206 Partial Content
3x
300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
4x
400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Time-out
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Request Entity Too Large
414 Request-URI Too Large
415 Unsupported Media Type
416 Requested range not satisfiable
417 Expectation Failed
5x
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Time-out
505 HTTP Version not supported Fonte RCF (Request for Comments) 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
10
215 JSON
O JSON (JavaScript Object Notation) eacute conhecido por seu alto desempenho na
troca de dados e foi criado por Douglas Crockford Eacute utilizado como alternativa ao
XML pois utiliza pouca banda em transferecircncias ao contraacuterio do XML (JSONorg
2015)
O JSON possibilita a troca de informaccedilotildees entre aplicaccedilotildees sem que haja perdas ou
lentidotildees Sua estrutura eacute de faacutecil compreensatildeo e conta com vaacuterias ferramentas para
interpretaccedilatildeo pode representar quatro tipos de dados primaacuterios (strings nuacutemeros
booleanos e nulos) e dois tipos estruturados (objetos e vetores) O JSON foi
desenvolvido com o objetivo de ser simples portaacutevel e textual (SAUDATE 2013)
Figura 1 - Representaccedilatildeo de um objeto JSON
Fonte JSONorg (Setembro de 2016)
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
11
216 Apache Tomcat
Para o desenvolvimento do Web Service foi necessaacuteria a utilizaccedilatildeo do servidor
Apache Tomcat v70 O Apache Tomcat eacute um servlet container que implementa a
JSR tal (servlet e JSP 30) eacute fornecido sob licenccedila da Apache Segundo PAMPLONA
(2010) o Tomcat eacute um container para JSP e Servlets muito conhecido e utilizado
217 JERSEY
Framework utilizado para abstrair os detalhes de baixo niacutevel da comunicaccedilatildeo
cliente-servidor a fim de simplificar o desenvolvimento de serviccedilos Web RESTful e
seus clientes em Java O framework RESTful Web Jersey Services eacute open source
disponibiliza uma estrutura para desenvolver serviccedilos Web RESTful em Java que
fornecem suporte para JAX-RS APIs e serve como um JAX-RS (JSR 311 e JSR 339)
Implementaccedilatildeo de Referecircncia Aleacutem de Jersey ser uma referecircncia de implementaccedilatildeo
JAX-RS fornece sua proacutepria API que estende o KIT de ferramentas JAX-RS com
utilitaacuterios e ferramentas que simplificam ainda mais a implementaccedilatildeo de um serviccedilo
Web RESTful (JERSEY 2015)
218 ERP
ERP eacute um sistema que integra os dados e processos de uma organizaccedilatildeo Sua
arquitetura eacute distribuiacuteda em moacutedulos (sistemas de financcedilas contabilidade recursos
humanos fabricaccedilatildeo marketing vendas compras) eacute uma plataforma desenvolvida
para integrar todos os departamentos da organizaccedilatildeo alimentados por uma base de
dados principal (PADILHA 2005)
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
12
219 JAVA
Java eacute uma linguagem de programaccedilatildeo interpretada e orientada a objetos Foi
desenvolvida na deacutecada de 90 por uma equipe coordenada por James Gosling na
organizaccedilatildeo Sun Microsystems Java eacute uma linguagem interpretada que eacute compilada
para bytecode que por sua vez eacute interpretado por uma JVM (Java Virtual Machine)
(DEITEL 2003)
No meio empresarial e corporativo a cultura do Java vem se expandindo de uma
forma gradual e constante permitindo que diversas empresas desenvolvam
aplicaccedilotildees utilizando esta linguagem (DEITEL 2003)
3 DESENVOLVIMENTO DO PROJETO
311 Desenvolvimento do Web Service
Para o desenvolvimento foi necessaacuterio criar um Web Dynamic Project na IDE
Eclipse EE Foram adicionadas 4 bibliotecas Jersey ao projeto para possibilitar o
desenvolvimento dos Web Services satildeo elas
asmjar jersey-core jersey-server jsr311-api
Em seguida foi configurado o Web Container apache Tomcat Apoacutes as configuraccedilotildees
iniciais realizadas foi necessaacuterio configurar o arquivo webxml onde foi informado o
servlet (Tomcat) e o pacote onde os recursos foram criados
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
13
Figura 2 - Configuraccedilatildeo do arquivo webxml
Fonte Proacuteprio autor
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
14
312 Recursos
Para atender as necessidades deste projeto foi criado o recurso VendasRESO
recurso de vendas possui meacutetodos que retornam informaccedilotildees de vendas registradas
na base de dados
Os meacutetodos que o recurso VendasRES disponibiliza satildeo
ProdutosMaisVendidosPeriodo (String Data_Inicial String Data_Final int
Numero_Registros)
Lista um ranking dos produtos mais vendidos dentro do periacuteodo passado nos
paracircmetros Data_Inicial e Data_Final
TotalVendidoPeriodo (String Data_Inicial String Data_Final)
Lista todas as vendas dentro do periacuteodo definido nos paracircmetros Data_Inicial
e Data_Final
TotalVendasCanceladas (String Data_Inicial String Data_Final)
Lista o total de vendas que foi cancelada no periacuteodo passado nos paracircmetros
Data_Inicial e Data_Final
Figura 3- Diagrama de sequecircncia da comunicaccedilatildeo entre aplicaccedilatildeo Android e a API
Rest
Fonte Proacuteprio autor
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
15
313 Aplicaccedilatildeo Mobile
A aplicaccedilatildeo mobile conta com trecircs graacuteficos Produtos mais vendidos no periacuteodo
Vendas no Periacuteodo e Quantidade de vendas Canceladas no Periacuteodo
314 Graacuteficos
Os graacuteficos seratildeo plotados utilizando a biblioteca GraphView GraphView eacute uma
biblioteca de coacutedigo livre que permite a criaccedilatildeo de forma raacutepida e faacutecil de graacuteficos aleacutem
de ser faacutecil de compreensatildeo Para utilizar a biblioteca na aplicaccedilatildeo foi necessaacuterio
adicionar sua referecircncia as dependecircncias do Gradle
Figura 4- Dependecircncia da biblioteca GraphView que foi adicionada ao projeto
Fonte Proacuteprio autor
Os graacuteficos disponibilizados pela biblioteca satildeo Line Graphs Bar Graphs e Point
Graphs No projeto foi utilizado apenas o Graacutefico de Barras (Bar Graph)
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
16
315 Activitys
Figura 5 - Telas da aplicaccedilatildeo mobile
Fonte Proacuteprio autor
316 Requisiccedilotildees ao Web Service
Os recursos seratildeo obtidos atraveacutes de uma chamada assiacutencrona ao web service A
chamada eacute realizada pela classe HttpRequestTask estaacute classe estende a classe
AsyncTask A classe HttpRequestTask foi construiacuteda de forma geneacuterica permitindo
que o retorno JSON do recurso solicitado seja desserializado sem a necessidade de
uma nova implementaccedilatildeo para cada recurso desejado
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
17
Figura 6 ndash Classe assiacutencrona geneacuterica responsaacutevel por consumir e desserializar o
recurso do Web Service
Fonte Proacuteprio Autor
Para consumirmos um recurso no Web Service precisamos definir uma classe de
retorno esta classe deve possuir atributos que correspondam ao retorno em JSON
os atributos devem possuir a anotaccedilatildeo SerializedName(nome_do_atributo) para
que a desserializaccedilatildeo possa ocorrer A desserializaccedilatildeo eacute realizada por meacutetodos do
Spring Framework for Android
A chamada deve seguir o padratildeo new HttpRequestTaskltEntidadeRetornogt(
EntidadeRetornoclassthis)execute(url)
EntidadeRetono representa a entidade que seraacute retornada ao consumir o
recurso
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
18
EntidadeRetornoclass Representa o tipo da classe recurso utilizado para
realizar a desserializaccedilatildeo do objeto JSON
url URL contendo o caminho do servidor porta api a ser acessada e o meacutetodo
a ser consumido seguido de paracircmetros caso houver
Para acessar determinado recurso teriacuteamos que fazer a seguinte requisiccedilatildeo HTTP
httphostportaprojetorecursometodoparametros
Por exemplo para obtermos todas as vendas de um determinado periacuteodo temos que
requisitar a seguinte URL httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016 Esta requisiccedilatildeo iraacute
retornar o objeto JSON para este caso o JSON retornado foi o seguinte
Figura 7 - JSON retornado ao consumir o meacutetodo listarTodosPeriodo
Fonte Proacuteprio autor
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
19
O objeto JSON acima seraacute desserializado para a classe exibida na imagem abaixo
Figura 8 - Classe utilizada na desserializaccedilatildeo do objeto JSON retornado
Fonte Proacuteprio autor
Os dados obtidos seratildeo apresentados no graacutefico abaixo
Figura 9 ndash Graacutefico obtido na requisiccedilatildeo HTTP httplocalhost8080api-
eduardovendalistarTodosPeriodo08-01-201608-02-2016
Fonte Proacuteprio autor
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
20
Ao clicar sobre a segunda barra seraacute exibido o dia e o valor total que foi vendido no
dia
Figura 10 ndash Informaccedilotildees detalhadas da Seacuterie
Fonte Proacuteprio autor
4 CONCLUSAtildeO
O objetivo deste trabalho foi desenvolver uma API que realizasse o processo de
requisiccedilatildeo a um servidor REST para possibilitar a integraccedilatildeo de aplicaccedilotildees
desenvolvidas em Android e Web Services aplicando os princiacutepios REST O
desenvolvimento da API foi feito utilizando a linguagem Java foram criadas classes e
interfaces quem possibilitaram o encapsulamento dos principais meacutetodos HTTP No
desenvolvimento da aplicaccedilatildeo Android foi possiacutevel notar que a plataforma pode ser
facilmente utilizada para integrar e interagir com sistemas distintos e realizar a troca
de informaccedilotildees de maneira aacutegil aleacutem de disponibilizar uma documentaccedilatildeo bem
elaborada completa e de faacutecil compreensatildeo Notou-se tambeacutem o crescente interesse
das empresas em elaborarem Web Services para que seus sistemas fiquem prontos
para interagir com outras aplicaccedilotildees
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
21
5 REFEREcircNCIAS BIBLIOGRAacuteFICAS
APACHE TOMCAT Site Oficial do ApcaheTomcat Disponiacutevel em
lthttptomcatapacheorggt Acesso em 09 de Outubro 2015
BURKE B RESTful Java with JAX-RS 1Ed Sebastopol OReilly 2009
CAMPOS J RESTMB API RESTful para Android Disponiacutevel em lt
httpabertounivemedubrbitstreamhandle11077988Monografia20Finalpdfse
quence=1gt Acessado em 11 Outubro de 2015
CHAPPELL DJEWELL T Java Web Services 1Ed Sebastopol OReilly 2002
JERSEY RESTful Web Services in Java Disponiacutevel em lt httpsjerseyjavanetgt
acessado em 15 de Outubro de 2015
JSON Introducing JSON Disponiacutevel em lthttpwwwjsonorggt acessado em 15 de
Outubro de 2015
KALIN MJava Web Services Up and Running 1Ed Sebastopol OrsquoReilly 2009
GEORGAKOPOULOS D PAPAZOGLOU M Service-oriented computing
Introduction Communications of the ACM THE MIT PRESS 2008
MONTEIRO J B Google Android Crie aplicaccedilotildees para celulares e tablets 1 ed
Casa do Coacutedigo 2012 312 p
PAMPLONA VF Web Services Construindo disponibilizando e acessando Web
Services via J2SE e J2ME 2010 Disponiacutevel em
lthttpjavafreeuolcombrartigo871485Web-Services-Construindo-
isponibilizandoe-acessando-Web-Services-via-J2SE-eJ2MEhtmlgt Acesso em 20
Outubro de 2015
SAUDATE A REST Construa APIrsquos inteligentes de maneira simples 1 ed Casa do
Coacutedigo 2013 101 p
Smartphone OS Market Share 2015 Q2 Disponiacutevel em
httpwwwidccomprodservsmartphone-os-market-sharejsp Acessado em 09 de
Outubro de 2015
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016
22
ZANCUL E ROZENFELD H Sistemas ERP Disponiacutevel em
lthttpswwwipenbrbibliotecacdconem2000CC8808pdfgt Acessado em 24
Outubro de 2015
MAURIacuteCIO C NAKAMURA E Computaccedilatildeo Moacutevel Novas Oportunidades e Novos
Desafios TampC Amazocircnia Ano 1 noordm2 Junho de 2003
TORRES G Redes de Computadores 2 ed Nova Terra 2014
PADILHA TCC MARINS FAS Sistemas ERP caracteriacutesticas custos e
tendecircncias Revista Produccedilatildeo v 15 n 1 p 102-113 2005
DEITEL P DEITEL P Java ndash Como Programar 4ordf Ediccedilatildeo Editora Bookman
BELLON G Desenvolvendo para Android - Introduccedilatildeo 15 Set 2011 Disponiacutevel em
lthttpwwwmestreAndroidcombrdesenvolvendo-para-Androidintroducaogt Acesso
em 11 Outubro 2015
IDC Smartphone OS Market Share 2016 Q2 Disponiacutevel em lt
httpwwwidccomprodservsmartphone-os-market-sharejspgt acessado em 15 de
Outubro de 2016