До появления версии 1.3 J2EE не было архитектуры, описывающей интерфейс между сервером приложений и провайдерами, реализующими корпоративную информационную систему (Enterprise Information System, EIS). Поэтому производители серверов приложений и EIS применяли специфические архитектуры, обеспечивающие интеграцию EIS. Это означало, что для каждого сервера приложений, поддержку которого хотел бы осуществлять производитель EIS, нужно было создавать специфический адаптер ресурсов, а для каждого адаптера, поддержку которого хотел бы осуществлять производитель сервера приложений, нужно было бы расширять возможности сервера приложений.
Спецификация J2EE 1.3 потребовала, чтобы серверы приложений поддерживали J2EE Connector Architecture (JCA) версии 1.0. В архитектуре J2EE Connector Architecture определяется стандарт для подключения совместимого сервера приложений к EIS. Определяется стандартный набор контрактов системного уровня между сервером приложений J2EE и адаптером ресурсов.
В результате серверы приложений нужно расширить только для того, чтобы включить в них поддержку всех совместимых с J2EE Connector Architecture адаптеров ресурсов. И, наоборот, производителям EIS нужно только реализовать один совместимый с J2EE Connector Architecture адаптер ресурсов, который может быть установлен на любой совместимый с ним сервер приложений.
Системные контракты, определяемые версией 1.0 J2EE Connector Architecture, согласно спецификации описаны далее.
• Управление соединениями.
Управление соединениями позволяет серверу приложений работать с пулом соединений с EIS, а также позволяет компонентам приложений подключаться к EIS. Этим формируется масштабируемая среда для приложений, которая может поддерживать большое количество клиентов, которым необходим доступ к EIS.
• Управление транзакциями.
Управление транзакциями позволяет серверу приложений использовать менеджер транзакций для управления транзакциями, охватывающими несколько менеджеров ресурсов. Этот контракт также поддерживает транзакции, которые имеют внутреннее управление со стороны менеджера ресурсов EIS, без необходимости привлечения внешнего менеджера транзакций.
• Управление безопасностью.
Управление безопасностью обеспечивает поддержку защищенной среды приложений, которая уменьшает опасности для EIS и защищает ценные информационные ресурсы, находящиеся под управлением EIS.
При том, что версия 1.0 J2EE Connector Architecture направлена на удовлетворение основных требований отправителей серверов приложений и отправителей EIS, она оставляет нерешенными некоторые проблемы. В результате появилась версия 1.5 этой спецификации, и в этой версии указывается, что серверы приложений должны поддерживать версию 1.4 спецификации J2EE.
Дополнительные системные контракты определяются версией 1.5 J2EE Connector Architecture следующим образом.
• Управление жизненным циклом.
Управление жизненным циклом позволяет серверу приложений управлять жизненным циклом адаптера ресурсов. Этот контракт предоставляет механизм для настройки сервером приложений адаптера ресурсов при его размещении или при запуске сервера приложений, а также для посылки уведомлений экземпляру адаптера ресурсов об удалении или запланированном отключении сервера приложений.
• Управление работой.
Управление работой позволяет адаптеру ресурсов работать (осуществлять мониторинг конечных точек, вызывать компоненты приложений и т. п.) путем передачи рабочих экземпляров (work instances) серверу приложений для исполнения. Сервер приложений регулирует потоки и выполняет переданные ему экземпляры работы. Это позволяет адаптеру ресурсов избежать прямого создания потоков и управления ими, а также дает серверу приложений возможность эффективно работать с пулом потоков и лучше контролировать среду исполения. Адаптер ресурсов может контролировать контекст транзакций, в котором выполняются экземпляры работы.
• Управление входящими транзакциями.
Управление входящими транзакциями позволяет адаптеру ресурсов передать импортированную транзакцию на сервер приложений. Этот контракт также позволяет передать вызовы, связанные с завершением транзакции и восстановлением после сбоя, инициируемые EIS, а также обеспечивает сохранение таких свойств импортированной транзакции, как неделимость, согласованность, изолированность и устойчивость.
• Управление входящими сообщениями.
Управление входящими сообщениями позволяет адаптеру ресурсов осуществлять асинхронную доставку сообщений в конечные точки, находящиеся на сервере приложений, независимо от стиля обмена сообщениями, семантики сообщений и инфраструктуры, используемой для доставки сообщений. Этот контракт также
служит стандартным контрактом возможности подключения к провайдеру системы обмена сообщений, который позволяет подключать широкий диапазон провайдеров систем обмена сообщениями (Java Message Service (JMS), Java API for XML Messaging (JAXM), и т. п.) к любому совместимому с J2EE серверу приложений с адаптером ресурсов.
Примечание. За полным описанием всех перечисленных выше системных контрактов
обращайтесь, пожалуйста, к спецификации J2EE Connector Architecture, версия 1.5. Ссылку на эту спецификацию можно найти в разделе 8.8, «Справочные материалы и ресурсы».
В контексте асинхронного обмена сообщениями нас интересуют системные контракты управления соединениями и управления входящими сообщениями. Эти системные контракты предназначены как для входящей, так и исходящей связи от клиента к провайдеру системы обмена сообщениями. Это показано на рис. 8.9.
Поскольку системный контракт по управлению соединениями появился в версии 1.0 J2EE Connector Architecture, мы не будем подробно рассматривать его здесь. Обращайтесь к спецификации J2EE Connector Architecture версии 1.5 за дополнительной информацией о системном контракте по управлению соединениями.
В следующих разделах рассматриваются аспекты системного контракта, связанного с потоком входящих сообщений, перечисленные далее.
• Конечные точки для сообщений.
• Адаптеры ресурсов.
• JMS ActivationSpec JavaBean.
• Администрируемые объекты.