Skip to content

Executar Projetos Play

Markenson edited this page Aug 21, 2014 · 2 revisions

Como executar projetos feitos com o Play, integrar ao Siga e empacotá-los em war

Introdução

Esta página explica (ou referencia explicações sobre) como executar, integrar ao Siga e empacotar em war os projetos feitos com uso do Play Framework.

Para seguir este tutorial, é necessário ter algum conhecimento sobre o funcionamento do Siga. O ambiente de desenvolvimento do Siga deve também estar configurado em alguma IDE, com todos os módulos disponíveis e prontos para execução. Não deixe de ler antes a explicação sobre a estrutura dos projetos Play.

Caso já possua uma aplicação Play em funcionamento sem integração com o Siga, vá direto para o segundo tópico, Integrando a aplicação ao Siga. O terceiro tópico trata da geração do arquivo war para execução da aplicação integrada no servidor de aplicação.

Criando a aplicação Play

Instalando o Play 1.2.4

A versão 1.2.4, usada no Siga, pode ser baixada em [Basta descompactar no diretório de preferência.

Mais informações sobre a instalação e também sobre a criação de uma primeira aplicação podem ser encontradas em http://www.playframework.com/documentation/1.2.4/install

Migrando a aplicação para a IDE

A página [descreve, para cada uma das principais IDE's, os passos necessários para a adequação de um projeto Play à estrutura dos projetos dessas IDE's. Lá estão também instruções para execução e depuração da aplicação dentro dessas IDE's.

Integrando a aplicação ao Siga

Garantindo acesso ao Corporativo

Como a aplicação precisará fazer consultas às tabelas do Corporativo, é necessário que a sua conta de acesso ao banco de dados possua as devidas permissões.

Um exemplo do conjunto de grants a ser executados para essa conta pode ser observado no arquivo https://code.google.com/p/projeto-siga/source/browse/sigasr/app/db/migration/SIGASR_UTF8_V1_preparacao_inicial.sql SIGASR_UTF8_V1_preparacao_inicial.sql, a partir da linha 29. Caso se deseje conceder apenas o acesso minimamente necessário, pode-se aproveitar essa lista, substituindo-se 'sigasr' pelo nome do usuário da aplicação.

Configurando as dependências

Primeiro, configure na IDE a dependência entre o projeto Play e o projeto siga-play-module, que possui recursos a serem usados pela aplicação, como tags e funções. Essa dependência é obrigatória para toda aplicação Play a ser integrada ao Siga.

Inclua também, no arquivo application.conf, as seguintes linhas:

module.siga-play=../siga-play-module
module.siga-cp=../siga-cp

Ajustando as propriedades

Retire do application.conf informações como usuário, senha e URL para conexão. Elas devem constar no arquivo siga.properties, usado pelo Siga, no formato abaixo:

<nome da aplicação>.desenv.play.db.user=#usuario
<nome da aplicação>.desenv.play.db.pass=#senha

desenv.play.db.url=#url
desenv.play.db.driver=#driver
desenv.play.jpa.dialect=#dialeto
desenv.play.jpa.debugSQL=#true ou false

desenv.play.mail.smtp.host=#servidor
desenv.play.mail.smtp.user=#usuario
desenv.play.mail.smtp.pass=#senha
desenv.play.mail.debug=#true ou false
desenv.play.mail.smtp.port=#porta
desenv.play.servidor.principal=#servidor (talvez localhost)

Observe que algumas propriedades têm o nome da aplicação (por exemplo, sigasr) como prefixo, usado apenas quando a propriedade não seja compartilhada com outra aplicação Play.

Para que essas propriedades sejam carregadas do siga.properties, é necessário incluir, no arquivo usado para lançamento da aplicação Play na IDE, o argumento JVM -Dsiga.properties.file=/siga.properties. No Eclipse, por exemplo, esse arquivo chama-se <nome da aplicação>.launch.

Ainda para o carregamento das propriedades, é preciso criar, no diretório conf da aplicação Play, o arquivo play.plugins com o conteúdo 1003:util.SigaPlugin. O objetivo desse arquivo é orientar o Play iniciar a aplicação executando o plugin que carrega as propriedades do siga.properties.

Usando recursos disponíveis no siga-play-module

O siga-play-module possui recursos do siga-cp e do siga-base. Classes como DpPessoa, DpLotacao, CpConfiguracaoBL, HistoricoSuporte, bem como várias outras, podem - e devem - ser utilizadas pela aplicaçao Play.

O controller Application da aplicação precisa herdar da classe SigaApplication, que tem disponíveis variáveis e métodos como cadastrante() e obterCabecalhoEUsuario.

Observe, nos arquivos Application e main.html, do sigasr, como esses recursos devem ser usados, por exemplo, para obter o usuário logado e exibir páginas de erro.

O siga-play-module possui ainda tags como selecao, pessoaLotaSelecao e links.

Acessando a aplicação e o Siga pela mesma porta

Normalmente, a aplicação Play é acessada por meio da porta 9000 (podendo essa configuração ser alterada por propriedade do arquivo application.conf). Como o restante do Siga é executado no servidor de aplicação, por porta diferente, é necessário fazer com que todas essas aplicações possam ser acessadas pela mesma porta, sem no entanto se perder a flexibilidade da execução do Play pela porta 9000.

Para isso, configure a aplicação para que suas URL's façam parte do padrão do Siga (http://servidor/<nome da aplicação>/<ação>), incluindo a seguinte propriedade no arquivo application.conf:

http.path=/<nome da aplicação>

Baixe a versão 2.2.22 do Apache e inclua, no arquivo http.conf, do Apache, abaixo da linha listen 80, as seguintes informações:

NameVirtualHost *:80

<VirtualHost *:80>
   RewriteEngine On
   ProxyPreserveHost On
   RewriteRule ^/<nome da aplicação>(.*)$ http://localhost:9000/<nome da aplicação>$1 [P]
   RewriteRule ^/siga(.*)$ http://localhost:8080/siga$1 [P]
 </VirtualHost>

Descomente também as seguintes linhas desse arquivo:

LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule rewrite_module modules/mod_rewrite.so

Após esses passos, reiniciado também o Apache para valerem as alterações, todas as aplicações devem estar disponíveis pela porta 80.

Gerando o war de um projeto

Para executar a aplicação em ambiente de produção, usa-se atualmente o servidor de aplicação JBoss, que exige a aplicação empacotada num arquivo .war.

Pela linha de comando, execute, dentro do diretório do Play 1.2.4, o comando play war c:<caminho do workspace><nome da aplicação> -o <nome da aplicação>.war.

Clone this wiki locally