14Google App Engine

Começando um projeto

Devido às restrições de segurança na sandbox do Google App Engine, alguns componentes do VRaptor3 precisam ser substituídos e uma seleção diferente de dependências deve ser usada. Uma versão do blank-project já contendo estas alterações está disponível em nossa página de downloads.

Configuração

Para habilitar os componentes do VRaptor para o Google App Engine, você precisa adicionar a seguinte configuração no seu web.xml:

<context-param>
    <param-name>br.com.caelum.vraptor.packages</param-name>
    <param-value>br.com.caelum.vraptor.gae</param-value>
</context-param>

Limitações

Um detalhe importante é que a injeção de dependências não funciona no redirecionamento para lógicas; o controlador é instanciado recebendo null em todos os seus parâmetros. Sendo assim, deve-se evitar chamadas como:

result.use(Results.logic()).redirectTo(SomeController.class).someMethod();
validator.onErrorUse(Results.logic()).of(SomeController.class).someMethod();

preferindo Results.page() - ou então escrever seus controllers de forma a esperar pelos valores nulos.

Problemas comuns

O ambiente de execução do App Engine não habilita o suporte a Expression Language por padrão, nem suporta a tag . Assim sendo, para habilitar o suporte a EL, é necessário adicionar a seguinte linha nos arquivos JSP:

<%@ page isELIgnored="false" %>

No caso de arquivos de tags, deve-se adicionar:

<%@ tag isELIgnored="false" %>

JPA 2

O VRaptor possui suporte ao JPA nas versões 1 e 2, porém o ambiente do Google App Engine suporta apenas JPA 1. Por isso você deve evitar de copiar o JAR jpa-api-2.0.jar para seu projeto.