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

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

Что такое адаптер ресурсов?

Адаптер ресурса — это компонент Java EE, который реализует архитектуру коннекторов Java EE для определённой EIS. Примерами EIS могут быть информационные системы планирования ресурсов предприятия, обработки транзакций мэйнфреймов и системы управления базами данных. На сервере Java EE сервер сообщений Java и JavaMail также действуют как EIS, обращение к которым выполняется с помощью адаптеров ресурсов. Как показано на рис. 55-1, адаптер ресурсов облегчает связь между приложением Java EE и EIS.

Рис. 55-1. Адаптеры ресурсов

Контракты на адаптеры ресурсов

Адаптер ресурса упаковывается в RAR-файл и может быть развёрнут на любом сервере Java EE как обычное приложение Java EE. RAR-файл может быть включён в состав EAR-файла или существовать отдельно от него.

Адаптер ресурса аналогичен драйверу JDBC. Оба предоставляют стандартный API, через который приложение может получить доступ к ресурсу, который находится за пределами сервера Java EE. Для адаптера ресурса целевой системой является EIS. Для драйвера JDBC это СУБД. Адаптеры ресурсов и драйверы JDBC редко создаются разработчиками приложений. В большинстве случаев оба типа программного обеспечения разрабатываются провайдерами, которые предоставляют инструменты, серверы или интеграционное ПО.

Адаптер ресурсов обеспечивает связь между сервером Java EE и EIS посредством контрактов. Контракт приложения определяет API, через который компонент Java EE, такой как Enterprise-бин, получает доступ к EIS. Этот API является единственным представлением EIS. Системные контракты связывают адаптер ресурсов с важными сервисами, которые управляются сервером Java EE. Сам адаптер ресурсов и его системные контракты прозрачны для компонента Java EE.

Контракты управления

Архитектура коннекторов Java EE определяет системные контракты, которые включают жизненный цикл адаптера ресурса и управление потоками.

Управление жизненным циклом

Архитектура коннекторов определяет контракт управления жизненным циклом, который позволяет серверу приложений управлять жизненным циклом адаптера ресурсов. Этот контракт предоставляет серверу приложений механизм начальной загрузки объекта адаптера ресурсов во время развёртывания или запуска сервера приложений. Этот контракт также предоставляет серверу приложений средство уведомления объекта адаптера ресурсов, когда оно удаляется или когда происходит корректное завершение работы сервера приложений.

Контракт управления работами

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

Адаптеры ресурсов, некорректно использующие потоки, могут поставить под угрозу всю среду сервера приложений. Например, адаптер ресурсов может создать слишком много потоков или может некорректно освободить созданные им потоки. Плохая обработка потоков препятствует завершению работы сервера приложений и влияет на его производительность, поскольку создание и удаление потоков — дорогостоящие операции.

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

Помимо перемещения управления потоками на сервер приложений, архитектура коннекторов предоставляет гибкую модель для адаптера ресурсов, использующего потоки.

  • Запрашивающий поток может выбрать блокировку (остановить собственное выполнение) до завершения рабочего потока.

  • Запрашивающий поток может блокироваться, пока он ожидает получения рабочего потока. Когда сервер приложений предоставляет рабочий поток, запрашивающий поток и рабочий поток выполняются параллельно.

  • Адаптер ресурса может поставить выполнение некоторой задачи для потока в очередь. Поток выполнит задачу из очереди позже. Адаптер ресурса продолжает выполняться с того момента, когда он поставил задачу в очередь, независимо от её выполнения потоком.

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

Контракт общего вида работ

Контракт управления работами между сервером приложений и адаптером ресурсов позволяет адаптеру ресурсов выполнять задачу, такую ​​как обмен данными с EIS или доставка сообщений, путём предоставления объектов Work для выполнения.

Контракт общего вида работ позволяет адаптеру ресурсов управлять контекстами, в которых отправляемые им объекты Work выполняются WorkManager-ом сервера приложений. Механизм общего вида работ также позволяет серверу приложений поддерживать схемы поступления и доставки сообщений. Он также предоставляет более богатую контекстную среду выполнения Work адаптеру ресурсов, сохраняя при этом контроль над параллелизмом в управляемой среде.

Контракт общего вида работ стандартизирует контекст транзакции и контекст безопасности.

Исходящие и входящие контракты

Архитектура коннекторов определяет следующие исходящие контракты, контракты системного уровня между сервером приложений и EIS, которые обеспечивают исходящее подключение к EIS.

  • Контракт управления соединениями поддерживает пул соединений, метод, который повышает производительность и масштабируемость приложений. Пул соединений прозрачен для приложения, которое просто получает соединение с EIS.

  • Контракт управления транзакциями расширяет контракт управления соединениями и обеспечивает поддержку для управления как локальными, так и XA-транзакциями.

    Локальная транзакция ограничена по объёму одной системой EIS, и менеджер ресурсов EIS сам управляет такой транзакцией. Транзакция XA или глобальная транзакция могжет охватывать несколько менеджеров ресурсов. Эта форма транзакции требует координации транзакции внешним менеджером транзакций, как правило, в комплекте с сервером приложений. Менеджер транзакций использует протокол двухфазной фиксации для управления транзакцией, охватывающей несколько менеджеров ресурсов или EIS, и использует оптимизацию однофазной фиксации, если в транзакции XA участвует только один менеджер ресурсов.

  • Контракт управления безопасностью предоставляет механизмы для аутентификации, авторизации и безопасного обмена данными между сервером Java EE и EIS для защиты информации в EIS.

    Рабочее отображение безопасности сопоставляет идентификаторы EIS с идентификаторами домена сервера приложений.

Входящие контракты — это системные контракты между сервером Java EE и EIS, которые обеспечивают входящее соединение из EIS: контракты на подключение для поставщиков сообщений и контракты на импорт транзакций.


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