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

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

Обмен информацией

Веб-компоненты, как и большинство объектов, обычно работают с другими объектами для выполнения своих задач. Веб-компоненты могут сделать это, выполнив следующие действия.

  • Использование частных вспомогательных объектов (например, компонентов JavaBeans).

  • Совместное использование объектов, которые являются атрибутами общедоступной области.

  • Использование базы данных.

  • Вызов других веб-ресурсов. Механизмы технологии Java Servlet, которые позволяют веб-компоненту вызывать другие веб-ресурсы, описаны в Вызов других веб-ресурсов.

Использование объектов областей видимости

Совместно работающие веб-компоненты обмениваются информацией с помощью объектов, которые поддерживаются в качестве атрибутов четырёх объектов областей видимости. Вы получаете доступ к этим атрибутам с помощью методов getAttribute и setAttribute класса, представляющего область видимости. Таблица 18-2 перечисляет объекты областей видимости.

Таблица 18-2 Объекты областей видимости

Область видимости

Класс

Доступно с

Веб-контекст

javax.servlet.ServletContext

Веб-компоненты в веб-контексте. Смотрите Доступ к веб-контексту.

Сессия

javax.servlet.http.HttpSession

Веб-компоненты, обрабатывающие запрос, принадлежащий сессии. Смотрите Поддержание состояния клиента.

Запрос

Дочерний тип javax.servlet.ServletRequest

Веб-компоненты, обрабатывающие запрос.

Страница

javax.servlet.jsp.JspContext

Страница JSP, которая создаёт объект.

Управление одновременным доступом к общим ресурсам

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

Параллельный доступ может возникнуть в нескольких ситуациях.

  • Несколько веб-компонентов, обращающихся к объектам, хранящимся в веб-контексте.

  • Несколько веб-компонентов, обращающихся к объектам, хранящимся в сессии.

  • Несколько потоков внутри веб-компонента обращаются к переменным объекта. Веб-контейнер обычно создаёт поток для обработки каждого запроса. Чтобы гарантировать, что объект сервлета обрабатывает только один запрос за один раз, сервлет может реализовать интерфейс SingleThreadModel. Если сервлет реализует этот интерфейс, никакие два потока не будут выполняться одновременно в сервисном методе сервлета. Веб-контейнер может гарантировать это, синхронизируя доступ к одному объекту сервлета или поддерживая пул объектов веб-компонента и отправляя каждый новый запрос в свободный объект. Этот интерфейс не предотвращает проблемы синхронизации, возникающие в результате доступа веб-компонентов к общим ресурсам, таким как статические переменные класса или внешние объекты.

Когда к ресурсам можно получить доступ одновременно, они могут использоваться противоречивым образом. Вы можете предотвратить это, управляя доступом, используя методы синхронизации, описанные в документации по потокам на http://docs.oracle.com/javase/tutorial/essential/concurrency/.


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