Java Platform, Enterprise Edition (Java EE) 8
Учебник по Java EE

Назад Вперёд Содержание

Файл конфигурации приложения

JavaServer Faces обеспечивает переносимый формат конфигурации (в виде документа XML) для настройки ресурсов приложения. Один или несколько документов XML, называемых файлами конфигурации приложения, могут использовать этот формат для регистрации и настройки объектов и ресурсов, а также для определения правил навигации для приложений. Файл конфигурации приложения обычно называется faces-config.xml.

Файл конфигурации приложения необходим в следующих случаях:

  • Чтобы указать элементы конфигурации для вашего приложения, которые недоступны через аннотации Managed-бина, такие как локализованные сообщения и правила навигации

  • Чтобы переопределить аннотации Managed-бина при развёртывании приложения

Файл конфигурации приложения должен быть действителен для схемы XML, расположенной по ссылке http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd.

Кроме того, каждый файл должен содержать следующую информацию в следующем порядке:

  • Номер версии XML, обычно с атрибутом encoding:

    <‎?xml version="1.0" encoding='UTF-8'?>
  • Тег faces-config, содержащий все другие объявления:

    <faces-config version="2.2" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
                  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                  http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd">
        ...
    </faces-config>

Вы можете иметь более одного файла конфигурации для приложения. JavaServer Faces находит файл/файлы конфигурации следующим образом.

  • Ресурс с именем /META-INF/faces-config.xml в любом из файлов JAR в каталоге /WEB-INF/lib/ веб-приложения и в загрузчиках родительских классов , Если ресурс с таким именем существует, он загружается как ресурс конфигурации. Этот метод полезен для упакованной библиотеки, содержащей некоторые компоненты и отрисовщики. Кроме того, любой файл с именем, оканчивающимся на faces-config.xml, также считается ресурсом конфигурации и загружается как таковой.

  • Параметр инициализации контекста, javax.faces.application.CONFIG_FILES, в файле дескриптора развёртывания, который указывает один или несколько путей (разделённых запятыми) нескольких файлов конфигурации для вашего веб-приложения. Этот метод чаще всего используется для приложений масштаба предприятия, которые делегируют отдельным группам ответственность за ведение файла для каждой части большого приложения.

  • Ресурс с именем faces-config.xml в каталоге /WEB-INF/ вашего приложения. Таким образом простые веб-приложения делают свои файлы конфигурации доступными.

Чтобы получить доступ к ресурсам, зарегистрированным в приложении, разработчик приложения может использовать объект класса javax.faces.application.Application, который автоматически создаётся для каждого приложения. Объект Application действует как централизованная фабрика для ресурсов, определённых в файле XML.

Когда приложение запускается, JavaServer Faces создаёт один объект класса Application и настраивает его в соответствии с информацией из файла конфигурации приложения.

Ранняя инициализация Managed-бинов с областью видимости приложения

Компоненты, управляемые JavaServer Faces (либо указанные в файле faces-config.xml, либо аннотированные javax.faces.bean.ManagedBean), создаются отложенно (lazy). То есть, они создаются при выполнении запроса из приложения.

Чтобы объект компонента в области видимости приложения создавался и помещался в область приложения сразу после запуска приложения и до выполнения любого запроса, атрибут eager Managed-бина должен быть установлен в true, как показано в следующих примерах.

Объявление файла faces-config.xml выглядит следующим образом:

<managed-bean eager="true">

Аннотация выглядит следующим образом:

@ManagedBean(eager=true)
@ApplicationScoped

Упорядочение файлов конфигурации приложения

Поскольку JavaServer Faces позволяет иметь несколько файлов конфигурации приложения, хранящихся в разных местах, в определённых ситуациях может быть важен порядок их загрузки (например, при использовании объектов уровня приложения). Этот порядок может быть определён через элемент ordering и его подэлементы в самом файле конфигурации приложения. Порядок файлов конфигурации приложения может быть абсолютным или относительным.

Абсолютный порядок определяется элементом absolute-ordering в файле. При абсолютном упорядочении пользователь указывает порядок, в котором будут загружаться файлы конфигурации приложения. В следующем примере показана запись для абсолютного упорядочения.

Файл my-faces-config.xml содержит следующие элементы:

<faces-config>
    <name>myJSF</name>
    <absolute-ordering>
        <name>A</name>
        <name>B</name>
        <name>C</name>
    </absolute-ordering>
</faces-config>

В этом примере A, B и C являются различными файлами конфигурации приложения и должны быть загружены в указанном порядке.

Если в файле есть элемент absolute-ordering, обрабатываются только файлы, перечисленные подэлементом name. Для обработки любых других файлов конфигурации приложения требуется подэлемент others. В отсутствие подэлемента others все неперечисленные файлы будут игнорироваться во время загрузки.

Относительный порядок определяется элементом ordering и его подэлементами before и after. При относительном упорядочении порядок загрузки файлов конфигурации приложения вычисляется с учётом порядка записей из разных файлов. В следующем примере показаны некоторые из этих соображений. В следующем примере config-A, config-B и config-C — это разные файлы конфигурации приложения.

Файл config-A содержит следующие элементы:

<faces-config>
    <name>config-A</name>
    <ordering>
        <before>
            <name>config-B</name>
        </before>
    </ordering>
</faces-config>

Файл config-B (здесь не показан) не содержит элементов ordering.

Файл config-C содержит следующие элементы:

<faces-config>
    <name>config-C</name>
    <ordering>
        <after>
            <name>config-B</name>
        </after>
    </ordering>
</faces-config>

Благодаря записи подэлемента before файл config-A будет загружен перед файлом config-B. Благодаря записи подэлемента after файл config-C будет загружен после файла config-B.

Кроме того, подэлемент others также может быть вложен в подэлементы before и after. Если присутствует элемент others, указанный файл может получить наивысшее или наименьшее предпочтение как среди перечисленных, так и незарегистрированных файлов конфигурации.

Если элемент ordering отсутствует в файле конфигурации приложения, этот файл будет загружен после всех файлов, содержащих элементы ordering.


Назад Вперёд Содержание
Логотип Oracle  Copyright © 2017, Oracle и/или её дочерних компаний. Все права защищены. Версия перевода 1.0.5 (Java EE Tutorial — русскоязычная версия)