Com o mercado crescente de aplicativos para dispositivos móveis e os esforços das empresas por trás das plataformas em oferecer uma experiência de uso única em todos os dispositivos, torna-se cada vez mais importante que os dados não fiquem “presos” apenas nos dispositivos, mas disponíveis para uso posterior em outra plataforma.
Por exemplo, considere um aplicativo para dispositivos Android que possibilita o armazenamento de indicadores corporais. Considerando o fato de que futuros planos para esse aplicativo envolvam a evolução do mesmo para se tornar uma plataforma de saúde, seria necessária a implementação de métodos para fazer com que informações cadastradas no smartphone do usuário pudessem estar também presentes em seu computador ou tablet. Para isso, poderia ser implementado um web service que receberia envelopes serializados SOAP e armazenaria as informações enviadas dentro desses pacotes em um banco de dados, podendo esse ser baseado em qualquer banco relacional que forneça um driver JDBC.
Neste artigo criaremos um web service capaz de receber dados de uma aplicação cliente em formato de envelopes SOAP e armazená-los em um banco de dados. Mostraremos a definição de classes para gerenciamento de duas entidades que seriam utilizadas por um aplicativo de anotações: Usuário e Anotação. Tanto a parte cliente como a servidor será escrita em Java, porém o servidor poderá receber pacotes de linguagens diferentes.
Demonstraremos a criação de um projeto web service no Eclipse, visto que o mesmo necessita de configurações relacionadas ao ambiente. Considerando que as classes implementadas no lado do cliente são escritas em Java, as mesmas podem tanto ser utilizadas em uma aplicação Java para desktops quanto em um dispositivo móvel Android.
Tecnologias a serem utilizadas
Web Service
Um web service é parte do back-end de uma aplicação, ou seja, a parte que os usuários não interagem diretamente. O mesmo possibilita a comunicação com diferentes plataformas cliente, enquanto mantém o gerenciamento de dados de um sistema bastante genérico para maior flexibilidade na administração.
A comunicação entre uma aplicação cliente e um web service se dá através de pacotes HTTP, que podem ser baseados em dois principais protocolos: SOAP e REST. No exemplo aqui apresentado, construiremos pacotes SOAP com os dados dos objetos a serem enviados para o banco de dados. O serviço em questão será um aplicativo Java rodando em um servidor de aplicação Tomcat.
Tomcat
Para que possamos fazer com que a aplicação Java seja acessível através da internet, podendo assim comunicar-se com os dispositivos clientes, hospedaremos a mesma em um servidor de aplicação Tomcat. O papel do Tomcat será executar o código da aplicação de acordo com as requisições recebidas. Através dele também se pode monitorar o tráfego de dados da aplicação e gerenciar os recursos disponíveis para a mesma, especialmente a quantidade de memória alocada.
SOAP
O SOAP (Protocolo Simples de Acesso a Objetos) é um protocolo de troca de mensagens entre aplicações baseado em XML. O mesmo possibilita que, através da comunicação por HTTP, definições completas de objetos, ou mesmo instruções simples, sejam enviadas e requisitadas a um Web Service em um simples documento XML.
PostgreSQL
O SGBD escolhido para essa aplicação foi o PostgreSQL. A escolha se deu por diversos motivos, sendo o principal deles a natureza open source do projeto. Seu destaque sobre outra opção, o MySQL (também open source), se dá pela constante atualização da plataforma e consequente implementação acelerada de novas funcionalidades.
Considerando-se que toda a estrutura da aplicação está baseada na linguagem Java, também foi necessário que o SGBD fornecesse um driver para a utilização da API JDBC. Essa API define métodos para o acesso de informações em um banco de dados através de aplicações Java.
Apache Axis
O Axis é um framework que implementa o protocolo SOAP, convertendo programas Java em web services capazes de receber requisições pela internet e enviar respostas que possam ser facilmente interpretadas por aplicações escritas em uma grande variedade de linguagens, já que a comunicação é baseada no formato XML.
Requisitos
Para proceder com a implementação descrita no artigo, é necessário possuir algumas aplicações já instaladas. Descrevemos a seguir a infraestrutura necessária:
· É necessário possuir uma instalação do Tomcat para que o Web Service possa ser inicializado. Por se tratar de uma máquina virtual Java, o processo é bastante simples e está descrito em detalhes na documentação oficial do Tomcat (ver seção Links). Neste exemplo, utilizamos a última versão (8.0.28).
· Já que o Tomcat é um container de aplicações baseado em Java, também é necessária a instalação do Java Runtime Environment. Caso o desenvolvimento seja realizado no mesmo ambiente em que o Tomcat está sendo executado, é necessária a instalação do Java Development Kit, requerido por ferramentas de desenvolvimento, como o Eclipse e o Android Studio. Qualquer uma das opções pode ser obtida no site da Oracle (ver seção Links). Em nosso ambiente, temos a última versão estável do Java (8u65).
· Como integraremos nossa aplicação a um banco de dados, precisamos de um instalado em uma máquina local ou servidor dedicado. Como explicado na seção “Tecnologias a serem utilizadas”, escolhemos o PostgreSQL para este exemplo. O mesmo pode ser obtido sem custos através do site oficial do SGBD (ver seção Links). A versão que utilizamos é a 9.4.
· Para a criação do Web Service (um arquivo WAR que será instalado na instância Tomcat), recomendamos o uso do Eclipse IDE for Java EE Developers. O mesmo pode ser encontrado no site oficial do projeto (ver seção Links);
· O Axis será necessário para a construção das classes responsáveis por receber e interpretar as requisições SOAP. Não é necessário instalá-lo, basta deixar a pasta de instalação acessível para configuração no Eclipse. Para isso, baixe o arquivo ZIP de sua distribuição binária no site oficial do projeto (ver seção Links) e descompacte. Recomendamos a última versão (1.6.3).
· Independentemente do banco de dados escolhido, é necessário obter o driver JDBC específico para aquele banco. No caso do PostgreSQL, o driver pode ser obtido através do site ofic ...