-
Notifications
You must be signed in to change notification settings - Fork 96
Executar Projetos Play
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.
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
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.
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.
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
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.
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.
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.
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.