Google App Engine + JSF 2 + PrimeFaces

Continuando a série GAE, o post agora é sobre inserir o PrimeFaces em um projeto no GAE.
Aos que chegaram agora, para saberem como chegar até aqui, é só ver os os outros posts do blog que abordam o tema. Lembrando que a IDE usada é o eclipse. Para ver os posts anteriores, pode clicar aqui.

O PrimeFaces é uma implementação do JSF que vem aumentando de popularidade, comparando-a com os concorrentes mais famosos (RicheFaces, IceFaces). Essa evolução pode ser notada nesse gráfico do Google Trends. O showcase é bastante completo, a documentação é abrangente, tem fórum ativo, possui uma implementação para dispositivos móveis baseado no framework jQuery Mobile, vários temas disponíveis para utilização. Também é possível ver o showcase do PrimeFaces no próprio GAE.

Vamos ao que interessa , como colocar no ar a aplicação com o Primefaces!
Primeiro, faça o download do jar e coloque ele na pasta lib do projeto(projeto/war/WEB-INF/lib). A versão utilizada no tutorial será versão 2.2.1. Para funcionar, o PrimeFaces só precisa que as libs JSF estejam  no projeto (jsf-api e jsf-impl), que já estão na pasta lib.

Feito isso, para testar o funcionamento do primefaces, altere o arquivo login.xhtml. Veja um exemplo de como fica o arquivo.


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
 <title>JSF 2 + PrimeFaces</title>
</h:head>
<h:body>
<f:view contentType="text/html">
<h:form>
 <p:messages />
 <p:accordionPanel autoHeight="false">
  <p:tab title="Login no JSF">
   <h:panelGrid columns="2">
    <h:outputText value="E-mail:" />
    <h:inputText value="#{loginMB.mail}" required="true"
    requiredMessage="Preenchimento do e-mail obrigatório" />

    <h:outputText value="Senha:" />
    <h:inputSecret value="#{loginMB.senha}" required="true"
    requiredMessage="A senha não deve ser vazia" />
 
    <p:commandButton value="Ok - Primefaces"
    actionListener="#{loginMB.autenticar}" ajax="false" />
   </h:panelGrid>
  </p:tab>
 </p:accordionPanel>
</h:form>
</f:view>
</h:body>
</html>

Veja algumas telas do PrimeFaces funcionando.


O projeto de exemplo também pode ser visto rodando no GAE nesse link.

Por hoje é só, mas em breve mais algumas coisas sobre o PrimeFaces, JSF 2 e etc.

Google App Engine + JSF 2

Bom, eu ía escrever um post de como usar o JSF 2 com o GAE, mas encontrei um projeto pronto.

Já adiantando, configurar JSF no GAE é bem chato de ser feito, mas com esse projeto base é só fazer o download, importar para o eclipse e então fazer o desenvolvimento a partir dele.

O referido projeto encontra-se no site da YaW Tecnologia, e o download dele pode ser feito aqui.

Nos próximos posts, colocarei aqui informações sobre o Primefaces.

Fazendo deploy de uma aplicação no Google App Engine

No post anterior mostrei como criar uma primeira aplicação no Google App Engine (GAE). Agora vamos ver como é simples fazer o deploy da aplicação para a nuvem.

Existem duas formas de fazer o deploy de uma aplicação para o ambiente do GAE, uma delas é através do prompt de comandos e a outra é pelo plugin do eclipse.
Nesse link você tem a documentação do Google para essa tarefa, mas mesmo assim eu mostrarei aqui como fazer. Lembrando que a IDE usada é o eclipse 3.7 (Indigo), e a versão da SDK do Google é a 1.5.2.

Primeiro você deve configurar o arquivo appengine-web.xml, que está localizado em war/WEB-INF.
O arquivo xml deve estar da seguinte maneira:


<?xml version="1.0" encoding="utf-8"?>
<appengine-web-app xmlns="http://appengine.google.com/ns/1.0">
<application>[id_aplicacao]</application>
<version>1</version>

<!-- Configure java.util.logging -->
<system-properties>
<property name="java.util.logging.config.file" value="WEB-

INF/logging.properties"/>
</system-properties>

</appengine-web-app>


No lugar de [id_aplicacao], deve ser colocado o nome da aplicação que você criou no GAE (vejo esse post para ver como criar uma aplicação).

Para fazer o deploy é preciso ter feito login na sua conta Google dentro do eclipse, para isso basta clicar no canto superior esquerdo do eclipse, sobre Sign in to Google.
 Ao clicar, vai abrir uma janela de autenticação do Google Accounts, basta fazer o login normalmente e conceder acesso ao ecplise aos produtos Google listados (geralmente Google Code e Google App Engine).

Após o login, na aba de Project Explorer, clique com o botão direito sobre a aplicação, em seguida em Google > Deploy to App Engine. Vai abrir uma janela onde deve ser selecionado o projeto que está na sua máquina e que será enviado ao GAE (ele já vem com o nome do projeto no qual você clicou com o botão direito). Agora é só clicar no botão deploy, esperar o andamento do deploy. Se algum erro acontecer irá aparecer uma janela no eclipse informando detalhes do erro, caso contrário, no console do eclipse, a última mensagem será Deployment completed successfully.

Para testar a aplicação, acesse https://[id_aplicacao].appspot.com/. A minha aplicação de teste é https://simpleapplicationjsf.appspot.com/.


Em breve mais um pouco sobre o GAE, e sobre integração entre Google App Engine e JSF 2 e Primefaces.

Criando uma aplicação do Google App Engine no Eclipse 3.7 (Indigo)

O Google App Engine, segunda a definição da própria empresa:
O Google App Engine oferece um conjunto completo de desenvolvimento que utiliza tecnologias familiares para criar e hospedar aplicativos da web. O uso inicial será sempre gratuito e se você precisar de mais recursos computacionais, eles estão disponíveis a preços de mercado.

O GAE (Google App Engine), em resumo, é uma plataforma de hospedagem gratuita usando toda a infra do Google. Tem uma série de vantagens, tais como facilidade no deploy da aplicação, a alta escalabilidade que se consegue, um painel de controle muito completo dos recursos utilizados.

Mais informações você pode pegar aqui: Google App Engine.

Para ter acesso ao GAE é preciso ter uma conta do Gmail e cadastrar-se aqui. Para finalizar o cadastro, será necessário informar um número de celular para o qual será enviado um código de ativação. É possível ativar uma conta por número.

Nesse artigo vamos utilizar a IDE eclipse versão 3.7 (Indigo), que possui plugin para a utilização do GAE. O plugin também está disponível para a versão 3.6 do eclipse (Helios). O download do eclipse pode ser feito aqui.


O Google Code tem um passo a passo de como instalar o plugin.
Os itens que devem ser instalados para a utilização do GAE são os que estão na imagem abaixo.


Após a instalação dos plugins do Google, você terá um ícone de um g azul, e por ali criará um novo projeto.

Nas configurações do novo projeto, você deve definir um nome, um pacote default para suas classes, escolher a versão da SDK do GAE que você usará (aqui usaremos a 1.5.2). Deve desmarcar a opção "Use Google Web ToolKit".
Ao clicar em Finish, será gerada a seguinte estrutura para o projeto

Ao criar o projeto, o plugin já cria automaticamente um servlet que imprime como saída no navegador o tradicional "Hello Word".
Para testar o funcionamento e a instalação, você pode rodar o sistema e acessar o endereço http://localhost:8888.
Para rodar a aplicação, na aba Project Explorer, clique com o botão direito sobre a pasta do projeto e em "Run as > Web Application". Após a inicialização do servidor de aplicação, acesse o link acima, se aparecer uma tela com as boas vindas ao GAE e a lista de servlets disponíveis na aplicação, está funcionando!