integraÇÃo de sistemas legados e mobile … · 2.1.6 apache tomcat ... orientada a serviços é...

28
UNIVERSIDADE DE ARARAQUARA - UNIARA DEPARTAMENTO DE CIÊNCIAS DA ADMINISTRAÇÃO E TECNOLOGIA ENGENHARIA DE COMPUTAÇÃO EDUARDO DE SANTANA DA SILVA INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE UTILIZANDO UMA API RESTFUL ARARAQUARA 2016

Upload: vuongtuyen

Post on 18-May-2018

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 2: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 3: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 4: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 5: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 6: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 7: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 8: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 9: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 10: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 11: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 12: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 13: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 14: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 15: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 16: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 17: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 18: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 19: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 20: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 21: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 22: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 23: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 24: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 25: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 26: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 27: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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

Page 28: INTEGRAÇÃO DE SISTEMAS LEGADOS E MOBILE … · 2.1.6 Apache Tomcat ... Orientada a Serviços é um paradigma quem propõe a interoperabilidade e o fraco acoplamento entre elementos

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