Академический Документы
Профессиональный Документы
Культура Документы
ROTEIRO
Introduo Instalao Criando um projeto no GAE
Hello World! Livro de Visitas
INTRODUO
Cloud Computing
BigTable
O ideal usar o Java 6 para compilar e testar a aplicao, a fim de garantir que o servidor local se comporte semelhante ao GAE
INSTALAO JAVA
Instale e configure a ltima verso do kit de desenvolvimento Java (JDK SE) na sua plataforma (Windows, Linux, etc)
http://www.oracle.com/technetwork/java/javase/ downloads/index.html
INSTALAO ECLIPSE
Iremos utilizar o Eclipse como IDE para desenvolvimento
Aqui, utilizaremos a verso 3.6 (Helios) para Win32 Se ainda no tem o Eclipse, v em http://www.eclipse.org/ Procure por Eclipse IDE for Java EE Developers
Pois vem com o plug-in do Web Tools Platform (WTP), que inclui modos de edio teis para arquivos JSP e HTML
PARA COMEAR...
Fazer inscrio no GAE
Para habilitar conta do Google para acesso ao App Engine
http://appengine.google.com
PARA COMEAR...
Fazer inscrio no GAE
No tem conta no Google?
https://www.google.com/accounts/NewAccount
PARA COMEAR...
Criar uma aplicao
Clique no boto Create Application para criar uma aplicao para rodar no GAE
PARA COMEAR...
Para criar aplicaes com o GAE, preciso um cdigo de verificao
O cdigo de verificao enviado via SMS
Deve-se digitar: +55 DD PPPP NNNN (DD = cdigo de rea sem o zero, PPPP = Prefixo do celular, NNNN = nmero final do celular)
PARA COMEAR...
Aps alguns segundos, o cdigo chegar ao seu celular
Digite o cdigo no espao apropriado
PARA COMEAR...
Aps a insero do cdigo de verificao, escreva a identificao da aplicao
Que ser concatenada com o domnio do GAE, appspot.com
Devido s cotas gratuitas, o Google disponibiliza inicialmente 10 aplicaes
ARQUIVOS DO PROJETO
src/guestbookt/GuestBookServlet.java
Aplicativos Java do GAE usam a API de servlet Java para interagir com o servidor da web Um servlet HTTP uma classe que processa e responde solicitaes da web Sobre Servlets:
http://download.oracle.com/javaee/5/api/javax/servlet/Servlet.html
ARQUIVOS DO PROJETO
src/guestbookt/GuestBookServlet.java
O projeto GuestBook (livro de visitantes) comea com uma classe de servlet simples
Para exibir uma mensagem (Hello World)
ARQUIVOS DO PROJETO
src/guestbookt/GuestBookServlet.java
package guestbook; import java.io.IOException; import javax.servlet.http.*; public class GuestbookServlet extends HttpServlet { public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType(text/plain); resp.getWriter().println(Hello, world); } }
ARQUIVOS DO PROJETO
src/META-INF/jdoconfig.xml
O GAE inclui suporte para duas APIs diferentes para armazenamento de dados: JDO (Java Data Objects Objetos de dados Java) e JPA (Java Persistence API API persistente Java) Usaremos a interface JDO para recuperar e postar mensagens deixadas pelos usurios
ARQUIVOS DO PROJETO
war/META-INF/web.xml
Quando o servidor recebe uma solicitao, ele determina qual classe de servlet deve chamar usando um arquivo de configurao conhecido como o descritor de implementao do aplicativo da web ou web.xml Faz parte do padro de especificao de servlets
ARQUIVOS DO PROJETO
war/META-INF/web.xml
Declara um servlet chamado guestbook Mapeia para o caminho /guestbook Afirma que sempre que o usurio obtm um caminho de URL que ainda no foi mapeado para um servlet e representa um caminho de diretrio dentro do WAR do aplicativo, o servidor deve procurar um arquivo chamado index.html nesse diretrio e carreg-lo
ARQUIVOS DO PROJETO
war/META-INF/appengine-web.xml
Arquivo de configurao adicional para o GAE descobrir como implementar e executar o aplicativo Inclui:
O ID registrado do seu aplicativo
O Eclipse cria isso com um ID vazio para que voc preencha posteriormente
A verso do aplicativo Listas de arquivos estticos (como imagens e CSS) Arquivos de recursos (como JSPs e dados de outros aplicativos)
ARQUIVOS DO PROJETO
war/META-INF/logging.properties
Propriedade que permite gravar os logs de execuo da aplicao
Tudo o que o servlet grava no fluxo de sada padro (System.out) e no fluxo de erro padro (System.err) capturado pelo GAE e gravado nos registros do aplicativo As linhas gravadas no fluxo de sada padro so registradas no nvel "INFO" e as linhas gravadas no fluxo de erro padro so registradas no nvel "WARNING"
ARQUIVOS DO PROJETO
war/index.html
Pgina inicial da aplicao, disponibilizando acesso aos servlets do GuestBook Ao clicar no link GuestBook, o servlet chamado e executado
DEPLOY DO APLICATIVO
Clique no boto Digite o email habilitado para acesso ao GAE, a senha e clique em Deploy
Se no colocou a ID da aplicao em appengineweb.xml, ser solicitado que se faa antes de liberar o Deploy
DEPLOY DO APLICATIVO
Ser exibida uma janela de progresso do envio
DEPLOY DO APLICATIVO
Se tudo transcorreu bem, aps o deployment da aplicao, acessar a aplicao no browser
http://identificao_da_aplicao.appspot.com/
<%@ page contentType=text/html;charset=UTF-8 language=java %> <%@ page import=com.google.appengine.api.users.User %> <%@ page import=com.google.appengine.api.users.UserService %> <%@ page import=com.google.appengine.api.users.UserServiceFactory %> <html> <body> <% UserService us = UserServiceFactory.getUserService(); User u = us.getCurrentUser(); if (u != null) { %> <p>Ola, <%= u.getNickname() %>! (Voce pode sair <a href=<%= us.createLogoutURL(request.getRequestURI())%> >aqui</a>.)</p> <% } else { %> <p>Ola! Clique <a href=<%= us.createLoginURL(request.getRequestURI()) %> >aqui</a> para incluir seu nome com saudacoes.</p> <% } %> </body> </html>
Altere as preferncias das JREs instaladas apontando para o diretrio do JSDK instalado
Window > Preferences > Java > Installed JREs
ARMAZENAMENTO DE DADOS
Maneira de lembrar as saudaes postadas pelo usurio e mostr-las para os outros visitantes Como dito antes, utilizaremos JDO
Para saber mais:
http://www.oracle.com/technetwork/java/index-jsp-135919.html
ARMAZENAMENTO DE DADOS
Uso do arquivo de configurao jdoconfig.xml
Para informar ao GAE quando usar o armazenamento de dados como backend para a implementao JDO
Uso de Java Annotation para criar as classes JDO, descrevendo como as instncias devem ser armazenadas e recriadas ao serem recuperadas
Sobre Annotations
http://www.developer.com/java/other/article.php/3556176/AnIntroduction-to-Java-Annotations.htm
ARMAZENAMENTO DE DADOS
Criar uma classe para representar mensagens individuais postadas no livro de visitas (Greenting.java)
Definindo trs propriedades de objetos no armazenamento de dados do GAE para uma saudao: author, content e date Definindo as funes set e get das propriedades, usadas apenas pelo aplicativo
No so necessrias para a JDO, ento no precisam ser anotadas
ARMAZENAMENTO DE DADOS
Criar uma classe para representar mensagens individuais postadas no livro de visitas (Greenting.java)
Definindo um campo chamado ID
Anotado como @Persistent e @PrimaryKey
@PersistenceCapable(identityType = IdentityType.APPLICATION) public class Greeting { @PrimaryKey @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) private Long id; @Persistent private User author; @Persistent private String content; @Persistent private Date date; public Greeting(User author, String content, Date date) { this.author = author; this.content = content; this.date = date; } public public public public public public public } Long getId() {return id;} User getAuthor() {return author;} String getContent() {return content;} Date getDate() {return date;} void setAuthor(User author) {this.author = author;} void setContent(String content) {this.content = content;} void setDate(Date date) {this.date = date;}
ARMAZENAMENTO DE DADOS
Alterar o SignGuestbookServlet para criar uma instncia Greeting e salvar no armazenamento de dados
Criando um PersistenceManager usando uma PersistenceManagerFactory
Em seguida, passando a instncia para o mtodo makePersistent()
String content = req.getParameter("content"); Date date = new Date(); Greeting greeting = new Greeting(user, content, date); PersistenceManager pm = PMF.get().getPersistenceManager(); try { pm.makePersistent(greeting); } finally { pm.close(); } resp.sendRedirect("/guestbook.jsp");
... //Depois do bloco Ola <% PersistenceManager pm = PMF.get().getPersistenceManager(); String query = select from + Greeting.class.getName(); List<Greeting> greetings = (List<Greeting>) pm.newQuery(query).execute(); if (greetings.isEmpty()) { %> <p>O Livro de Visitas nao tem mensagens.</p> <% } else { for (Greeting g : greetings) { if (g.getAuthor() == null) { %> <p>Uma pessoa anonima escreveu:</p> <% } else { %> <p><b><%= g.getAuthor().getNickname() %></b> escreveu:</p> <% } %> <blockquote><%= g.getContent() %></blockquote> <% } } pm.close(); %> //Antes do bloco form ...
ARMAZENAMENTO DE DADOS
Para simular o armazenamento de dados do GAE, o servidor usa um arquivo chamado local_db.bin
Criado no diretrio WAR/WEB-INF/appenginegenerated do aplicativo, Ele no enviado com o seu aplicativo no deploy Para limpar o contedo do armazenamento de dados, encerre o servidor e, em seguida, exclua esse arquivo
DEPLOY DO APLICATIVO
Fazer deploy e acessar/testar
http://identificao_da_aplicao.appspot.com/
DVIDAS???