Google Code disponible en: English - Español - 日本語 - 한국어 - Português - Pусский - 中文(简体) - 中文(繁體)
Además del descriptor de implementación web.xml, una aplicación Java de App Engine utiliza un archivo de configuración denominado appengine-web.xml, para especificar la ID de la aplicación registrada de la aplicación y el identificador de versión del último código, y para identificar los archivos del WAR de la aplicación que son archivos estáticos (por ejemplo, las imágenes) y los archivos de recursos que utiliza la aplicación. El comando AppCfg utiliza esta información al subir la aplicación.
Una aplicación Java de App Engine debe tener un archivo denominado appengine-web.xml en su WAR, en el directorio WEB-INF/. Se trata de un archivo XML cuyo elemento raíz es <appengine-web-app>. Un archivo mínimo que especifica la ID de la aplicación, un identificador de versión y ningún archivo estático o archivo de recursos tiene el aspecto siguiente:
<?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>
El elemento <application> contiene la ID de la aplicación. Es la ID de la aplicación que registras al crear tu aplicación en la consola de administración. Al subir la aplicación, AppCfg obtiene la ID de la aplicación a partir de este archivo.
El elemento <version> contiene el identificador de versión para la última versión del código de aplicación. Puede ser cualquier cadena. AppCfg utiliza este identificador de versión cuando sube la aplicación e indica a App Engine que cree una nueva versión de la aplicación con el identificador dado o que sustituya la versión de la aplicación con el identificador dado si ya existe. Puedes probar las versiones nuevas de tu aplicación a través de una URL como, por ejemplo, http://version-id.latest.application-id.appspot.com. Puedes seleccionar la versión de la aplicación que verán tus usuarios (la versión "predeterminada") a través de la consola de administración.
En la siguiente sección se describen los elementos <static-files> y <resource-files>.
Para obtener las especificaciones de esquema y de DTD de este archivo, consulta el directorio docs/ del kit de desarrollo de software (SDK).
Muchas aplicaciones web tienen archivos que se suministran directamente al navegador del usuario como, por ejemplo, imágenes, hojas de estilo CSS o código JavaScript de navegador. Se les conoce como archivos estáticos porque no cambian y pueden beneficiarse de los servidores web dedicados sólo a contenido estático. App Engine suministra archivos estáticos desde servidores y caches dedicados.
Los archivos accesibles por el código de aplicación a través del sistema de archivos se denominan resource files. Estos archivos se almacenan en los servidores de aplicación junto con la aplicación.
De forma predeterminada, todos los archivos del WAR se tratan como archivos estáticos y archivos de recursos, excepto en el caso de los archivos JSP, que se compilan en clases de servlet y se asignan a las rutas URL y los archivos del directorio WEB-INF/, que no se suministran nunca como archivos estáticos y siempre están disponibles para la aplicación como archivos de recursos.
Puedes ajustar los archivos que se considerarán archivos estáticos y los que se considerarán archivos de recursos a través de los elementos del archivo appengine-web.xml. El elemento <static-files> especifica patrones que coinciden con las rutas de los archivos que se van a incluir o excluir de la lista de archivos estáticos, corrigiendo así el comportamiento predeterminado. Del mismo modo, el elemento <resource-files> especifica los archivos que se van a considerar archivos de recursos.
Los patrones de ruta se especifican a través de cero o varios elementos <include> y <exclude>. En un patrón, * representa cero o varios de los caracteres de un nombre de archivo o de directorio, y ** representa cero o varios directorios de una ruta.
Un elemento <include> anula el comportamiento predeterminado de todos los archivos incluidos. Un elemento <exclude>se aplica tras todos los patrones<include> (además del predeterminado si no se proporciona un elemento <include> explícito).
Por ejemplo, para especificar que todos los archivos cuyos nombres terminan en .png son archivos estáticos (incluidos los de WEB-INF/) excepto los del directorio data/ y los de todos los subdirectorios siguientes:
<static-files>
<include path="/**.png" />
<exclude path="/data/**.png" />
</static-files>
Del mismo modo, para especificar que todos los archivos cuyos nombres terminan en .xml son archivos de recursos (incluidos los que no se encuentran en WEB-INF/) excepto los del directorio feeds/ y los de todos los subdirectorios siguientes:
<resource-files>
<include path="/**.xml" />
<exclude path="/feeds/**.xml" />
</resource-files>
Los archivos estáticos se suministran a través de un tipo MIME seleccionado según la extensión del nombre del archivo. Para suministrar un archivo con un tipo MIME personalizado, convierte el archivo en un archivo de recursos en lugar de en un archivo estático y crea un servlet que suministre datos con el tipo MIME personalizado.
El archivo appengine-web.xml puede definir propiedades del sistema y variables de entorno que se establecen cuando la aplicación se está ejecutando.
<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>
Si tu aplicación utiliza URL seguras (SSL, como por ejemplo https://...), debes habilitar SSL para la aplicación en el archivo appengine-web.xml. Para habilitar SSL, añade un elemento <ssl-enabled> al archivo:
<ssl-enabled>true</ssl-enabled>
Para obtener más información sobre la definición de URL seguras, consulta la sección Descriptor de implementación: URL seguras.
App Engine incluye una implementación de sesiones a través de la interfaz de sesión del servlet. La implementación utiliza el almacén de datos de App Engine y Memcache para almacenar datos de sesión.
Esta función está desactivada de forma predeterminada. Para activarla, añade a appengine-web.xml lo siguiente:
<sessions-enabled>true</sessions-enabled>
La implementación crea entidades del almacén de datos del tipo _ah_SESSION, y entradas de Memcache a través de claves con un prefijo de _ahs.