<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
Java Platform, Enterprise Edition (Java EE) 8 Учебник по Java EE |
Назад | Вперёд | Содержание |
В этом разделе описываются следующие задачи, связанные с настройкой веб-приложений:
Установка контекстных параметров
Объявление файлов входа
Назначение ошибок экранам ошибок
Объявление ссылок на ресурсы
Все веб-компоненты в веб-модуле совместно используют объект, представляющий контекст их приложения. Вы можете передать контекстные параметры в контекст или передать параметры инициализации сервлету. Контекстные параметры доступны для всего приложения. Для получения информации о параметрах инициализации см. Создание и инициализация сервлета.
Эти шаги применяются ко всем веб-приложениям вообще, а не только конкретно к примерам этой главы.
Чтобы добавить контекстный параметр с IDE NetBeans:
Откройте проект.
Разверните узел проекта в дереве проектов.
Разверните узел Веб-страницы, а затем узел WEB-INF.
Выполните двойной клик на web.xml
.
Если в проекте нет файла web.xml
, создайте его, выполнив шаги из Создание файла web.xml в IDE NetBeans.
Нажмите Общие в верхней части окна редактора.
Разверните узел Контекстные параметры.
Нажмите Добавить.
В диалоговом окне «Добавить контекстный параметр» в поле «Имя параметра» введите имя объекта контекста.
В поле «Значение параметра» введите параметр для передачи в объект контекста.
Нажмите ОК.
Чтобы создать файл web.xml
с IDE NetBeans:
В меню «Файл» выберите «Новый файл».
В мастере создания файлов выберите категорию «Интернет», затем выберите «Стандартный дескриптор развёртывания» в разделе «Типы файлов».
Нажмите кнопку Далее.
Нажмите Готово.
Файл web.xml
появится в web/WEB-INF/
.
Механизм файлов входа позволяет указать список файлов, которые веб-контейнер может добавить к запросу на URL (называемый допустимым частичным запросом), которому не назначен ни один веб-компонент. Для примера предположим, что вы определяете файл входа welcome.html
. Когда клиент запрашивает URL, такой как host:port/webapp/directory
, где directory
не назначен сервлету или странице XHTML, клиенту в ответ будет возвращён файл host:port/webapp/directory/`welcome.html
.
Если веб-контейнер получает валидный частичный запрос, он проверяет список файлов входа, добавляет к частичному запросу каждый файл приветствия в указанном порядке и проверяет, назначен ли статический ресурс или сервлет в WAR URL, указанному в запросе. Затем веб-контейнер отправляет запрос первому ресурсу, который есть в WAR.
Если файл входа не указан, GlassFish Server будет использовать файл index.html
в качестве файла входа по умолчанию. Если файлов входа и файла index.html
нет, GlassFish Server возвращает список каталогов.
Вы можете указать файлы входа в файле web.xml
. Спецификация файла входа для примера hello1
выглядит следующим образом:
<welcome-file-list>
<welcome-file>index.xhtml</welcome-file>
</welcome-file-list>
Файл входа нужно указывать без начальной и конечной косой черты (/
).
В примере hello2
не указан файл входа, поскольку запрос URL назначен веб-компоненту GreetingServlet
через шаблон URL-адреса /greeting
.
Если во время выполнения веб-приложения возникает ошибка, вы можете настроить приложение на отображение экрана конкретной ошибки в зависимости от её типа. А именно, можно указать соответствие между кодом состояния, возвращаемым в ответе HTTP, или исключением Java, выбрасываемым любым веб-компонентом, и экраном ошибок любого типа.
В дескрипторе развёртывания может быть указано несколько элементов error-page
. Каждый элемент идентифицирует отдельную ошибку, которая приводит к открытию страницы ошибки. Эта страница ошибки может быть одинаковой для любого количества элементов error-page
.
Эти шаги применяются ко всем веб-приложениям вообще, а не только конкретно к примерам этой главы.
Чтобы настроить отображение ошибок с IDE NetBeans:
Откройте проект.
Разверните узел проекта на вкладке «Проекты».
Разверните узел Веб-страницы, а затем узел WEB-INF.
Выполните двойной клик на web.xml
.
Если в проекте нет файла web.xml
, создайте его, выполнив шаги из Создание файла web.xml в IDE NetBeans.
Нажмите Страницы в верхней части окна редактора.
Разверните узел Страницы ошибок.
Нажмите Добавить.
В диалоговом окне «Добавить страницу ошибки» нажмите «Обзор» и найдите страницу, которую вы хотите использовать как страницу ошибки.
Укажите либо код ошибки, либо тип исключения.
Чтобы указать код ошибки, в поле «Код ошибки» введите код статуса HTTP, который приведёт к открытию страницы ошибки, или оставьте поле пустым, чтобы включить все коды ошибок.
Чтобы указать тип исключения, в поле «Тип исключения» введите исключение, которое приведёт к загрузке страницы ошибки. Чтобы указать все генерируемые ошибки и исключения, введите java.lang.Throwable
.
Нажмите ОК.
Если ваш веб-компонент использует такие объекты, как Enterprise-бины, источники данных или веб-сервисы, вы можете использовать аннотации Java EE для инъецирования этих ресурсов в ваше приложение. Аннотации позволяют избавиться от большого количества стандартного кода поиска и элементов конфигурации, которые требовались в предыдущих версиях Java EE.
Хотя инъецирование ресурсов с использованием аннотаций может быть более удобным для разработчика, существуют некоторые ограничения на его использование в веб-приложениях. Во-первых, вы можете инъецировать ресурсы только в объекты, управляемые контейнером, так как контейнер должен иметь контроль над созданием компонента, чтобы выполнить инъецирование в него. В результате вы не можете инъецировать ресурсы в такие объекты, как простые JavaBeans. Однако Managed-бины управляются контейнером и, следовательно, для них применимо инъецирование ресурсов.
Компоненты, для которых применимо инъецирование ресурсов, перечислены в таблице 6-1.
В этом разделе объясняется, как использовать несколько поддерживаемых веб-контейнером аннотаций для инъецирования ресурсов. Глава 41 «Выполнение примеров персистентности» объясняет, как веб-приложения могут использовать аннотации, поддерживаемые Java Persistence API. Глава 51 «Начало работы по защите веб-приложений» объясняет, как использовать аннотации для указания информации о безопасности веб-приложений. Смотрите главу 55 «Адаптеры и контракты ресурсов» для получения дополнительной информации о ресурсах.
Таблица 6-1. Веб-компоненты, для которых применимо инъецирование ресурсов
Компонент |
Интерфейс/Класс |
Сервлеты |
|
Фильтры сервлетов |
|
Слушатели событий |
|
Managed-бины |
Простые объекты Java |
Аннотация @Resource
используется для объявления ссылки на ресурс, такой как источник данных, Enterprise-бин или другой объект среды выполнения.
Аннотация @Resource
применяется для класса, метода или поля. Контейнер отвечает за инъецирование ссылок на ресурсы, объявленные аннотацией @Resource
, и сопоставление их с соответствующими ресурсами JNDI.
В следующем примере аннотация @Resource
используется для инъецирования источника данных в компонент, которому необходимо установить соединение с источником данных, как это делается при использовании технологии JDBC для доступа к реляционной базе данных:
@Resource javax.sql.DataSource catalogDS;
public getProductsByCategory() {
// получение соединения и выполнение запроса
Connection conn = catalogDS.getConnection();
...
}
Контейнер инъецирует этот источник данных до того, как компонент станет доступен для приложения. JNDI находит источник данных по его имени поля catalogDS
и его типу javax.sql.DataSource
.
Если у вас есть несколько ресурсов, которые нужно инъецировать в один компонент, используйте аннотацию @Resources
, чтобы содержать их, как показано в следующем примере:
@Resources ({
@Resource(name="myDB" type=javax.sql.DataSource.class),
@Resource(name="myMQ" type=javax.jms.ConnectionFactory.class)
})
В примерах веб-приложений этого учебника для доступа к реляционным базам данных используется API персистентности Java. Этот API не требует явного создания соединения с источником данных. Поэтому в примерах не используется аннотация @Resource
для инъецирования источника данных. Однако этот API поддерживает аннотации @PersistenceUnit
и @PersistenceContext
для инъецирования EntityManagerFactory
и EntityManager
соответственно. Глава 41 «Выполнение примеров персистентности» описывает эти аннотации и использование API Java Persistence в веб-приложениях.
Аннотация @WebServiceRef
предоставляет ссылку на веб-сервис. В следующем примере показано использование аннотации @WebServiceRef
для объявления ссылки на веб-сервис. WebServiceRef
использует элемент wsdlLocation
для указания URI файла WSDL развёрнутого сервиса:
...
import javax.xml.ws.WebServiceRef;
...
public class ResponseServlet extends HTTPServlet {
@WebServiceRef(wsdlLocation="http://localhost:8080/helloservice/hello?wsdl")
static HelloService service;
Назад | Вперёд | Содержание |