Адаптер ресурсов — это компонент, который связывает собственный API системы EIS с API, который определен JCA или какой-нибудь другой архитектурой, например, JDBC или JMS. Адаптеры ресурсов также часто называют коннекторами. Сам адаптер ресурсов работает в том же процессе, что и сервер приложений, и отвечает за доставку сообщений в конечные точки, обслуживаемые сервером приложений.
Пакет адаптера ресурсов
Адаптер ресурсов обычно предоставляется провайдером системы обмена сообщениями или сторонним производителем, и он поставляется в форме файла Resource Adapter Archive (RAR). Это файл RAR должен быть упакован с использованием формата Java Archive (JAR), и он может содержать следующие элементы.
• Любые классы-утилиты.
• Библиотеки«Native», требующиеся для реализации платформо-зависимых решений.
• Документацию.
• Дескриптор развертывания.
• Java-классы, реализующие контракты J2EE Connector Architecture и любые другие функции адаптера.
Единственным обязательным элементом RAR-файла является дескриптор развертывания. Он должен иметь имя ra.xml и должен размещаться в поддиректории METAINF RAR-файла.
Адаптер ресурсов обычно устанавливается на сервер приложений так, чтобы он был доступен во время выполнения для нескольких приложений J2EE. Однако существует возможность упаковать адаптер ресурсов в приложение, являющееся конечной точкой для сообщений.
В WebSphere Application Server предлагается предварительно сконфигурированный адаптер ресурсов для заданного по умолчанию JMS-провайдера системы обмена сообщениями. RAR-файл этого адаптера ресурсов называется sib.api.jmsra.rar, и он располагается в поддиректории lib инсталляционной директории WebSphere.
Дескриптор развертывания адаптера ресурсов
Дескриптор развертывания адаптера ресурсов содержит несколько информационных элементов, которые используют в период выполнения сервер приложений и адаптер ресурсов.
• Поддерживаемые типы обработчика сообщений.
Адаптер ресурсов перечисляет типы обработчиков сообщений, которые он поддерживает. Спецификации J2EE Connector Architecture версии 1.5 и EJB версии 2.1 не обязывают обработчиков сообщений использовать JMS API.
• ActivationSpec JavaBean.
Для каждого типа обработчика сообений, поддерживаемого адаптером ресурсов, в дескрипторе развертывания также должно быть указано имя Java-класса ActivationSpec JavaBean. Экземпляр ActivationSpec JavaBean инкапсулирует конфигурационную информацию, которая необходима для доставки сообщения в конечную точку. В разделе «JMS ActivationSpec JavaBean» объект ActivationSpec JavaBean для JMS-провайдеров описывается более подробно.
• Обязательные конфигурационные свойства.
Для каждого объекта ActivationSpec также указывается перечень обязательных свойств. Эти свойства могут использоваться для проверки конфигурации экземпляра ActivationSpec JavaBean. В примере 8.13 показан элемент messagelistener в дескрипторе развертывания для заданного по умолчанию JMS-провайдера системы обмена сообщениями. Обратите внимание, что поддерживается обработчик сообщений (javax.jms.MessageListener), и что ActivationSpec JavaBean имеет три обязательных свойства: destination, destinationType и busName.
Пример 8.13. Определение обработчика сообщений в J2EE Connecto r Architect ure <inbound-resourceadapter>
<messageadapter>
<messagelistener>
<messagelistener-type>
javax.jms.MessageListener </messagelistener-type>
<activationspec>
<activationspec-class>
com.ibm.ws.sib.api.jmsra.impl.JmsJcaActivationSpecImpl </activationspec-class>
<required-config-property>
<config-property-name>destination</config-property-name> </required-config-property>
<required-config-property>
<config-property-name>destinationType</config-property-name> </required-config-property>
<required-config-property>
<config-property-name>busName</config-property-name> </required-config-property>
</activationspec>
</messagelistener> </messageadapter>
</inbound-resourceadapter>
• Администрируемые объекты.
В дескрипторе развертывания адаптера ресурсов также может быть описан набор администрируемых объектов. Для каждого упоминаемого администрируемого объекта в дескрипторе развертывания должно быть указано имя Java-класса администрируемого объекта и реализуемый им интерфейс.
Эти администрируемые объекты по своей природе сходны с администрируемыми объектами JMS, которые рассматривались в разделе 8.2.4, «Администрируемые объекты JMS». Фактически, для JMS-провайдера, по умолчанию имеющегося в WebSphere Application Server, определяемые им администрируемые объекты J2EE Connector Architecture реализуют соответствующие интерфейсы администрируемых объектов JMS. Это показано в примере 8.14.
Пример 8.14. Определение администрируемого объекта J2EE Connecto r Architect ure <adminobject>
<adminobject-interface> javax.jms.Queue
</adminobject-interface> <adminobject-class>
com.ibm.ws.sib.api.jms.impl.JmsQueueImpl </adminobject-class>
<config-property>
<config-property-name>QueueName</config-property-name>
<config-property-type>java.lang.String</config-property-type> </config-property>
… дополнительные свойства удалены …
<config-property>
<config-property-name>BusName</config-property-name>
<config-property-type>java.lang.String</config-property-type> </config-property>
</adminobject>