artigo webmobile 17 - Desenvolvimento ponta-a-ponta: cliente JavaME com servidor JavaEE
Nesse artigo demonstraremos como criar um cliente JavaME que "conversa" com um web service através do Struts 2.
Aprenda na prática <?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />como construir aplicações JavaME que utilizam web services e Struts
Nesse artigo demonstraremos como criar um cliente JavaME que "conversa" com um web service através do Struts 2. O cliente depende do web service para atualizar as informações da base de dados. Imagine o seguinte cenário: o agente de saúde (aquele que passa na sua casa para ver focos de Dengue) no início do dia atualiza a sua rota (lista de endereços que ele deve visitar), e ao final do dia despacha o status das visitas para o mesmo servidor. Como isso é feito?
O web service apresenta duas funcionalidades: LoadAddress e UpdateAddress. Para o agente carregar os endereços daquele dia, ele faz uma chamada (através da aplicação JavaME) para o web service (executando a funcionalidade LoadAddress), carregando assim as rotas de visitas. Ao final do dia devolve os dados coletados nas visitas fazendo também uma chamada ao web service (executando a funcionalidade UpdateAddress).
O desenvolvimento da aplicação de exemplo será divido em duas partes, a primeira parte, que será descrita nesse artigo, apresentará de forma detalhada o desenvolvimento da aplicação móvel que será responsável por capturar os dados que serão coletados em campo. Será feito um overview sobre a API JavaME e a integração com Web services. A segunda parte, que será abordada num segundo artigo da série, apresentará a aplicação que será encarregada de receber os dados coletados em campo para que seja possível ter um histórico das rotas que foram executadas diariamente. Através da aplicação web, será possível também extrair relatórios baseados nos dados coletados.
Nesse artigo partimos do pressuposto que você já tenha um mínimo de conhecimento na tecnologia JavaME e todas as tecnologias relacionadas. O JavaME é dividido em Configurations, Profiles e API's opcionais (por exemplo: API's de suporte a ponto flutuante). Existem dois Configurations: (1) CLDC (Connected, Limited Device Configuration) que rege as configurações para aparelhos pequenos como celulares ou PDA's, e (2) CDC (Connected Device Configuration) que rege as configurações para aparelhos um pouco maiores, como TV interativa e videofones. A respeito dos Profiles, existem vários. Vamos citar dois: o MIDP (Mobile Information Device Profile): adiciona rede, componentes de interface, armazenamento local a CLDC (telefones celulares e dispositivos similares) e o PDA Profile: similar a MIDP, mas dirigida a PDAs. Neste artigo utilizaremos CLDC 1.0 e MIDP 2.0.
A aplicação web será construída utilizando o framework MVC Struts 2. Ao longo do segundo artigo desta série serão demonstradas algumas funcionalidades do Struts 2 para que o leitor possa ter uma base para construir aplicações que possam ser integradas com os diversos tipos de sistemas existentes. A primeira funcionalidade a ser criada será uma aplicação CRUD que permitirá o administrador do sistema cadastrar as rotas que os funcionários percorrerão durante o dia. A segunda funcionalidade será uma listagem das rotas que foram feitas durante o dia e os dados que foram coletados ordenados de acordo com a data. Dessa forma, o administrador do sistema será capaz de ter um histórico completo sobre quantos e quais dados foram coletados para cada rota.
Não será o foco desse artigo, mas é possível gerar gráficos com base nos dados coletados, nas rotas, etc. O framework Struts 2 possui um excelente suporte ao framework JFreeChart que é um framework para construção de gráficos em Java. A integração entre o Struts 2 e o JFreeChart poderá ser abordada eventualmente em outros artigos.
O primeiro passo para criar o CRUD das rotas a serem percorridas é criar um controller que será responsável por inserir, atualizar, pesquisar e deletar rotas. Cada rota deve possuir um nome, uma data de cadastro e uma descrição.
Para o desenvolvimento dessa aplicação usaremos os programas:
· Wireless Tollkit: <?xml:namespace prefix = st1 ns = "schemas-houaiss/mini" />software gratuito feito pela Sun <?xml:namespace prefix = st3 ns = "schemas-houaiss/acao" />para simplificar o ciclo de desenvolvimento do J2ME. Você pode baixá-lo em: http://java.sun.com/products/sjwtoolkit/download.html, versão – 2.5.1.
· j2sdk 1.5 instalado, (http://java.sun.com/javase/donwloads/index_jdk5.html).
· IDE utilizada: Eclipse 3.2 (http://www.eclipse.org).
· EclipseME Plugin: http://www.eclipseme.org
A partir de agora iremos criar a aplicação mobile. Para isso, abra o Sun Wireless Toolkit e clique em "New Project". Preencha o nome do projeto e o nome da classe Midlet (o nome da classe Midlet deve ser igual ao nome do projeto) conforme a Figura 1.
Figura 1. Novo projeto no WTK
Em seguida será aberta uma tela que contém informações sobre a sua aplicação que serão lidas pelo dispositivo móvel. <?xml:namespace prefix = st4 ns = "urn:schemas-microsoft-com:office:smarttags" />Em API Selection, selecione a opção "Custom" e selecione as opções nos campos configuration, profile e optional package de acordo com a Figura 2. Usaremos para esse projeto MIDP2.0 e CLDC 2.0, a JSR 135 vem marcado por default.
Figura 2. Configuração do projeto
Após esses passos, o toolkit terá criado vários diretórios dentro do caminho PATH_Sun_wireless_toolkit/Apps/ClienteRotas (vide Figura 3).