Избранное | Русский | Войти

Конфигурация приложения Java

Помимо дескриптора развертывания web.xml, приложение App Engine Java использует файл конфигурации appengine-web.xml для указания зарегистрированного идентификатора приложения и идентификатора версии последнего кода, а также для определения статических файлов в WAR приложения (например, изображений) и файлов ресурсов, используемых приложением. Команда AppCfg использует эти сведения при загрузке приложения.

О файле appengine-web.xml

Java-приложение App Engine должно иметь файл appengine-web.xml в WAR, в каталоге WEB-INF/. Это XML-файл, корневой элемент которого – <appengine-web-app>. Файл минимального размера, указывающий идентификатор приложения, идентификатор версии и не указывающий статические файлы и файлы ресурсов, выглядит следующим образом:

<?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>

Элемент <application> содержит идентификатор приложения. Это идентификатор приложения, зарегистрированный при создании приложения в консоли администрирования. При загрузке приложения AppCfg получает идентификатор приложения из этого файла.

Элемент <version> содержит идентификатор версии для последней версии кода приложения. Это может быть любая строка. AppCfg использует идентификатор версии при загрузке приложения, указывая App Engine на создание новой версии приложения с определенным идентификатором или замену этой версии, если она уже существует. Можно протестировать новые версии приложения с помощью URL-адреса, например http://version-id.latest.application-id.appspot.com. Выбрать версию приложения, которую видят пользователи, версию "по умолчанию", можно с помощью консоли администрирования.

Элементы <static-files> и <resource-files> описаны в следующем разделе.

DTD и спецификации схемы для этого файла находятся в каталоге docs/ SDK.

Статические файлы и файлы ресурсов

Множество веб-приложений имеют файлы, непосредственно передаваемые браузеру пользователя, например изображения, таблицы CSS-стилей и код JavaScript браузера. Они называются статическими файлами, поскольку не изменяются, и могут использоваться с веб-серверов, специально предназначенных для статического содержания. App Engine получает статические файлы со специально выделенных серверов и из кэшей.

Файлы, доступные для кода приложения с помощью файловой системы, называются resource files. Эти файлы сохраняются на серверах приложений вместе с приложениями.

По умолчанию все файлы в WAR считаются статическими файлами и файлами ресурсов, за исключением файлов JSP, которые преобразуются в классы сервлета и сопоставляются с путями URL, и файлов в каталоге WEB-INF/, которые никогда не используются в качестве статических файлов и всегда доступны для приложения как файлы ресурсов.

Можно определить, какие файлы считаются статическими, а какие – файлами ресурсов, с помощью элементов в файле appengine-web.xml. Элемент <static-files> указывает шаблоны, сопоставляющие пути файлов для включения и исключения из списка статических файлов, изменяя поведение по умолчанию. Аналогично, элемент <resource-files> указывает файлы, считающиеся файлами ресурсов.

Схемы путей указываются с помощью нуля или более элементов <include> и <exclude>. В схеме * обозначает ноль или более символов в названии файла или каталога, а ** – ноль или более каталогов в пути.

Элемент <include> переопределяет поведение по умолчанию, включая все файлы. Элемент <exclude> применяется после всех шаблонов <include> (а также шаблона по умолчанию, если <include> явно не указаны).

Например, чтобы указать, что все файлы, названия которых заканчиваются на .png, являются статическими (включая файлы в WEB-INF/), за исключением файлов в каталоге data/ и всех подкаталогов, используйте следующий фрагмент:

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

Аналогично, чтобы указать, что все файлы, названия которых заканчиваются на .xml, являются файлами ресурсов (включая файлы не в каталоге WEB-INF/), за исключением файлов в каталоге feeds/ и во всех подкаталогах, используйте следующий фрагмент:

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

Статические файлы получаются с помощью типа MIME, выбранного на основе расширения названия файла. Для получения файла с особым типом MIME сделайте его файлом ресурсов, а не статическим файлом, и создайте сервлет для получения данных с особым типом MIME.

Системные свойства и переменные среды

В файле appengine-web.xml могут определяться системные свойства и переменные среды, устанавливаемые при запуске приложения.

    <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>

Включение защищенных URL-адресов (SSL)

Если приложение использует защищенные URL-адреса (SSL, например https://...), необходимо включить SSL для приложения в файле appengine-web.xml. Чтобы включить SSL, добавьте элемент <ssl-enabled> в файл:

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

Подробнее об определении защищенных URL-адресов рассказано в статье Дескриптор развертывания: защищенные URL.

Включение сеансов

В App Engine имеется реализация сеансов с помощью интерфейса сеанса сервлета. Эта реализация использует хранилище данных App Engine и кэш памяти для хранения данных сеансов.

По умолчанию эта функция отключена. Чтобы включить ее, добавьте в файл appengine-web.xml следующий фрагмент:

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

Реализация создает объекты хранилища данных типа _ah_SESSION и объекты в кэше памяти, используя ключи с префиксом _ahs.