-
Java
Agenda de Contatos (Google App Engine)
Trabalho da Disciplina: Tecnologia WebServices e RESTful
Adriana Del Nero Romano
Robson Martins
Prof. Carlos L. L. Rischioto
MBA em Desenvolvimento de Aplicações Java - SOA / FIAP
08/01/2012
Download do código-fonte:
Agenda de Contatos (GAE) (ZIP ~8,9MB)
Tecnologias empregadas:
- Restlet (GAE Edition);
- GAE SDK;
- XML;
- JAXB;
- JPA;
- UI em modo console (consumer).
Enunciado:
Desenvolva a Aplicação de Controle de Contatos (a mesma do trabalho de WebServices) na Plataforma do Google App Engine (http://
URL da Aplicação:
Essa é a URL da aplicação Agenda de Contatos (GAE):
http://
Arquivos do Pacote ZIP:
AgendaGAE.zip: Projeto Java para o Eclipse, contendo o Servlet REST (for GAE) para a Agenda de Contatos.AgendaGAEClient.zip: Projeto Java para o Eclipse, contendo um Cliente em Modo Console (CUI) para a Agenda de Contatos.
Detalhes sobre a Implementação:
Este trabalho foi implementado usando o framework Restlet - edição para GAE (GAE Edition), facilitando a adaptação do exercício anterior (Agenda de Contatos em REST).
Basicamente, ao usar o Restlet GAE Edition junto com a aplicação Web do Google App Engine, pôde-se reaproveitar do exercício anterior (REST), as classes Resource (AgendaResource e ContatoResource), a classe Application (AgendaApplication), as classes DAO (GenericDAO e ContatoDAO), além dos Beans (POJO): Agenda e Contato.
Assim como na implementação da Agenda em REST, a serialização dos objetos é realizada por meio de um JaxbRepresentation (Uma extensão do Restlet que permite o uso do JAXB para transformar objetos em XML e vice-versa).
As principais alterações neste exercício (em relação ao anterior – Agenda de Contatos em REST):
-
Classe
Contato: o GAE necessita de uma Chave Primária (id) formada por um atributo do tipoKey(com.google.appengine.api.datastore.Key), e não um atributo numérico inteiro.
O atributo id foi mantido na geração do XML (para o formato ficar compatível com o exercício anterior), enquanto que o atributo key foi "anotado" para ser ignorado no XML. - Persistência: A persistência de dados ainda é feita através de JPA, porém o GAE possui um mecanismo próprio de datastore (não usa banco de dados externo, como MySQL, Oracle, SQLite, ou outro). Para isso, foi necessário configurar corretamente o arquivo
persistence.xml.
URL's do Serviço REST no GAE:
As URL's definidas no Servidor da Agenda são as seguintes:
http://
- Através do GET a essa URL, é obtida a lista de contatos em XML (método
listar()). - Através do POST de um XML a essa URL, é inserido um contato (método
inserir()).
http://
- Através do GET a essa URL, é obtido o contato em XML (método
consultar()). - Através do DELETE a essa URL, é excluído um contato (método
excluir()).
http://
- Idêntico ao
http://agenda-contatos-fiap.appspot.com/ agenda/ contatos
Exemplos de XML:
XML da Agenda (lista de Contatos):
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contatos>
<contato id="1">
<nome>Adriana Del Nero</nome>
<email>adriana@adriana.com.br</email>
<endereco>Av. dos Sonhos, 6433 - Apto. 603</endereco>
<cidade>São Paulo</cidade>
<estado>SP</estado>
<pais>Brasil</pais>
<telefone>8989-8484</telefone>
</contato>
<contato id="2">
<nome>Robson Martins</nome>
<email>robson@robson.com.br</email>
<endereco>Rua das Flores, 632</endereco>
<cidade>Salvador</cidade>
<estado>BA</estado>
<pais>Brasil</pais>
<telefone>7070-7060</telefone>
</contato>
</contatos>
XML de um Contato:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<contato id="1"> <!—- se contato vai ser inserido, id pode ser omitido --!>
<nome>Adriana Del Nero</nome>
<email>adriana@adriana.com.br</email>
<endereco>Av. dos Sonhos, 6433 - Apto. 603</endereco>
<cidade>São Paulo</cidade>
<estado>SP</estado>
<pais>Brasil</pais>
<telefone>8989-8484</telefone>
</contato>
Consumidor (Cliente) da Agenda:
A aplicação consumidora da Agenda é semelhante a do exercício anterior (REST), implementada usando uma UI em modo console (CUI).
As classes que implementam a aplicação consumidora estão no pacote br.com.fiap.cliente, sendo que a principal é a AgendaClient, onde está o método main().
A diferença entre esse Cliente e o do exercício anterior (REST), é a inclusão de um workaround para um bug do Restlet GAE Edition (ver AgendaRestClient.java:114) e a versão da biblioteca do Restlet (neste caso, 2.1 RC1).
Instruções para funcionamento das aplicações:
As instruções a seguir pressupõem que o projeto será executado a partir do Eclipse:
Cliente da Agenda de Contatos:
- Importar o projeto no arquivo
AgendaGAEClient.zippara um Workspace do Eclipse (Cliente da Agenda); - Executar a aplicação cliente, através da classe
AgendaClientdo pacotebr.com.fiap.cliente; -
Especificar a URL base do serviço no Google (default:
http://) – para aceitar o default, pressionar ENTER duas vezes;agenda-contatos-fiap.appspot.com/ agenda
Um menu em modo console é exibido, e poderá ser utilizado para invocar as operações previstas para essa aplicação.
Versões das ferramentas e bibliotecas utilizadas:
- Eclipse 3.6
- Java JDK 1.6
- Google Eclipse Plugin 2.4.2 (incluindo o GAE SDK)
- Restlet 2.1 RC1
- NetTool 4.7.2
Todos os sites foram visitados em 19/04/2020.
Português
English
Español
Français
Deutsch
Italiano
Pусский
日本語
中文
עברית
العربية
Ελληνικά
Esperanto