My favorites | Português | Sign in

Configuração do aplicativo Java

Além do descritor de implementação web.xml, um aplicativo do Google App Engine em Java usa um arquivo de configuração, chamado appengine-web.xml, para especificar o ID de aplicativo registrado do aplicativo e o identificador de versão do código mais recente e para identificar quais arquivos no WAR do aplicativo são arquivos estáticos (como imagens) e quais são arquivos de recursos usados pelo aplicativo. O comando AppCfg usa essas informações quando você envia o aplicativo.

Sobre o appengine-web.xml

Um aplicativo Java do Google App Engine deve ter um arquivo chamado appengine-web.xml em seu WAR, no diretório WEB-INF/. Este é um arquivo XML cujo elemento raiz é <appengine-web-app>. Um arquivo mínimo que especifica o ID do aplicativo, um identificador de versão e nenhum arquivo estático ou arquivo de recursos tem a seguinte aparência:

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

O elemento <application> contém o ID do aplicativo. Este é o ID do aplicativo que você registrou durante a criação do seu aplicativo no Console de administração. Ao enviar o seu aplicativo, o AppCfg obtém o ID do aplicativo a partir desse arquivo.

O elemento <version> contém o identificador de versão da versão mais recente do código do aplicativo. Pode ser qualquer string. O AppCfg usa esse identificador de versão quando envia o aplicativo, informando ao Google App Engine para criar uma nova versão do aplicativo com o identificador especificado, ou substituir a versão do aplicativo pelo identificador especificado se já existir uma. Você pode testar novas versões do seu aplicativo usando um URL como http://version-id.latest.application-id.appspot.com. Você pode selecionar qual versão do aplicativo os seus usuários visualizam, a versão "padrão", usando o Console de administração.

Os elementos <static-files> e <resource-files> estão descritos na próxima seção.

Você pode encontrar as especificações de DTD e de esquema para este arquivo no diretório docs/ do SDK.

Arquivos estáticos e arquivos de recursos

Muitos aplicativos da web têm arquivos oferecidos diretamente no navegador do usuário, como imagens, folhas de estilo CSS ou código JavaScript do navegador. Eles são conhecidos como arquivos estáticos, pois não mudam, e podem se beneficiar de servidores da web dedicados apenas ao conteúdo estático. O Google App Engine oferece arquivos estáticos de servidores dedicados e de caches.

Os arquivos acessados pelo código do aplicativo usando o sistema de arquivos são chamados de resource files. Esses arquivos são armazenados nos servidores de aplicativo com o aplicativo.

Por padrão, todos os arquivos no WAR são tratados como arquivos estáticos e arquivos de recursos, exceto os arquivos JSP, que são compilados em classes de servlet e mapeados para os caminhos de URL, e os arquivos no diretório WEB-INF/, que nunca são oferecidos como arquivos estáticos e estão sempre disponíveis para o aplicativo como arquivos de recursos.

Você pode ajustar quais arquivos são considerados arquivos estáticos e quais são considerados arquivos de recursos usando elementos no arquivo appengine-web.xml. O elemento <static-files> especifica padrões que correspondem aos caminhos dos arquivos de modo a incluir e excluir da lista de arquivos estáticos, corrigindo o comportamento padrão. Da mesma forma, o elemento <resource-files> especifica quais arquivos são considerados arquivos de recursos.

Os padrões de caminho são especificados usando nenhum ou mais de um elemento <include> e <exclude>. Em um padrão, * representa nenhum ou mais de um caractere qualquer em um nome de arquivo ou diretório e ** representa nenhum ou mais de um diretório em um caminho.

Um elemento <include> ignora o comportamento padrão de incluir todos os arquivos. Um elemento <exclude> é aplicado após todos os padrões <include> (e também como o padrão se nenhum <include> explícito for fornecido).

Por exemplo, para especificar que todos os arquivos cujos nomes terminem com .png sejam arquivos estáticos (incluindo aqueles no WEB-INF/) exceto aqueles no diretório data/ e em todos os subdiretórios:

    <static-files>
        <include path="/**.png" />
        <exclude path="/data/**.png" />
    </static-files>

Da mesma forma, para especificar que todos os arquivos cujos nomes terminem com .xml sejam arquivos de recursos (incluindo aqueles fora do WEB-INF/) exceto aqueles no diretório feeds/ e em todos os subdiretórios:

    <resource-files>
        <include path="/**.xml" />
        <exclude path="/feeds/**.xml" />
    </resource-files>

Os arquivos estáticos são oferecidos usando um tipo MIME selecionado com base na extensão do nome do arquivo. Para oferecer um arquivo com um tipo MIME personalizado, torne o arquivo um arquivo de recursos em vez de um arquivo estático e crie um servlet que ofereça os dados com o tipo MIME personalizado.

Propriedades do sistema e variáveis do ambiente

O arquivo appengine-web.xml pode definir as propriedades do sistema e as variáveis do ambiente configuradas durante a execução do aplicativo.

    <system-properties>
        <property name="myapp.maximum-message-length" value="140" />
        <property name="myapp.notify-every-n-signups" value="1000" />
        <property name="myapp.notify-url" value="http://www.example.com/signupnotify" />
    </system-properties>

    <env-variables>
        <env-var name="DEFAULT_ENCODING" value="UTF-8" />
    </env-variables>

Como ativar os URLs seguros (SSL)

Se o seu aplicativo usa URLs seguros (SSL, como https://...), você precisa ativar o SSL para o aplicativo no arquivo appengine-web.xml. Para ativar o SSL, adicione um elemento <ssl-enabled> ao arquivo:

    <ssl-enabled>true</ssl-enabled>

Consulte Descritor de implementação: URLs seguros para obter mais informações sobre como definir URLs seguros.

Como ativar as sessões

O Google App Engine inclui uma implementação de sessões, usando a interface de sessão do servlet. A implementação usa o armazenamento de dados do Google App Engine e o cache de memória para armazenar dados da sessão.

Esse recurso está desativado por padrão. Para ativá-lo, adicione o seguinte ao appengine-web.xml:

    <sessions-enabled>true</sessions-enabled>

A implementação cria entidades do armazenamento de dados do tipo _ah_SESSION e entradas do cache de memória usando chaves com um prefixo de _ahs.