Экземпляр объекта ActivationSpec JavaBean инкапсулирует конфигурационную информацию, необходимую для настройки асинхронной доставки сообщений в конечную точку. В спецификации J2EE Connector Architecture рекомендуется, чтобы JMS-провайдеры включали в свою реализацию ActivationSpec JavaBean следующие свойства.
• Destination.
Вспомните, что пункт назначения (destination) в JMS инкапсулирует адресную информацию для JMS-провайдера. JMS-клиент явным образом указывает пункт назначения при отправке и получения сообщения от JMS-провайдера. Конечная точка должна указать, какой пункт назначения адаптер ресурсов должен отслеживать на предмет входящих сообщений. После этого адаптер ресурсов отвечает за отправку уведомлений конечной точке при поступлении сообщения в указанный пункт назначения.
В спецификации J2EE Connector Architecture не определяется формат свойства destination, но признается, что не всегда удобно указывать значение в дескрипторе развертывания приложения, выступающего в роли конечной точки. Однако значение свойства destination необходимо обязательно указывать при размещении приложения, содержащего конечную точку для сообщений. По этой причине в спецификации J2EE Connector Architecture рекомендуется, чтобы адаптер JMS — ресурсов определял свойство destination как обязательное свойство ActivationSpec JavaBean. Адаптер ресурсов для заданного по умолчанию JMS-провайдера в WebSphere Application Server делает как раз это, и это показано в примере 8.13.
В J2EE Connector Architecture также говорится, что если указанный объект-пункт назначения реализует интерфейс javax.jms.Destination, то адаптер JMS-ресурсов должен предоставлять администрируемый объект, реализующий тот же интерфейс. И опять же, адаптер ресурсов для заданного по умолчанию JMS-провайдера в WebSphere Application Server делает это, и это показано в примере 8.14.
• DestinationType.
Свойство destinationType просто указывает, является ли заданный пункт назначения JMS-очередью или JMS-темой. Следовательно, допустимые значения этого свойства — javax.jms.Queue или javax.jms.Topic. В спецификации J2EE Connector Architecture рекомендуется, чтобы адаптер JMS-ресурсов определял свойство destinationType как обязательное свойство в ActivationSpec JavaBean. Адаптер ресурсов для заданного по умолчанию JMS-провайдера в WebSphere Application Server делает это, и это показано в примере 8.13.
• MessageSelector.
В JMS ActivationSpec JavaBean дополнительно можно задать свойство messageSelector. Селекторы JMS-сообщений рассматриваются в разделе «Селекторы сообщений» выше.
• AcknowledgeMode.
В JMS ActivationSpec JavaBean дополнительно можно задать свойство acknowledgeMode. Это свойство указывает EJB-контейнеру, как следует подтверждать прием сообщения, полученного конечной точкой (MDB). Допустимыми значениями являются Auto-acknowledge или Dups-ok-acknowledge. Если значение не указано, предполагается Auto-acknowledge.
За полным описанием подтверждения сообщений, пожалуйста, обращайтесь к спецификациям JMS 1.1 и EJB 2.1. Ссылки на эти спецификации можно найти в 8.8, «Справочная информация и ресурсы».
• SubscriptionDurability.
В JMS ActivationSpec JavaBean дополнительно можно задать свойство subscriptionDurability. Это свойство значимо, только если конечная точка для сообщений (MDB) получает сообщения от JMS-темы. В свойстве destinationType указано значение javax.jms.Topic.
Как говорилось в разделе «Долгосрочные подписки в домене Публикация/Подписка», для того, чтобы в JMS-домене Публикация/Подписка сообщение сохранялось в пункте назначения, когда приложение-подписчик недоступно, это приложение должно создать долгосрочную подписку. При использовании компонентов, управляемых сообщениями именно EJB-контейнер отвечает за создание подписок, когда пунктом назначения является JMS-тема. Данное свойство указывает EJB-контейнеру, должен ли он создавать долгосрочную подписку для JMS-темы.
Допустимыми значениями для свойства subscriptionDurability являются Durable (долгосрочная) или NonDurable (не долгосрочная). Если значение не указано, предполагается NonDurable.
• ClientId.
В JMS ActivationSpec JavaBean дополнительно можно задать свойство clientId. Это свойство значимо, только если конечная точка для сообщений (MDB) определяет долгосрочную подписку на JMS-тему (в свойстве destinationType указано значение javax.jms.Topic, а в свойстве subscriptionDurability указано значение Durable).
JMS-провайдер использует clientId для долгосрочных подписок с целью однозначной идентификации получателя сообщений. Если конечная точка определяет долгосрочную подписку, то необходимо задать значение для свойства clientId. Подходящее значение для свойства clientId обычно можно указать при размещении приложения, выполняющего функцию конечной точки.
• SubscriptionName.
В JMS ActivationSpec JavaBean дополнительно можно задать свойство subscriptionName. Это свойство значимо, только если конечная точка для сообщений (MDB) определяет долгосрочную подписку на JMS-тему (в свойстве destinationType указано значение javax.jms.Topic, а в свойстве subscriptionDurability указано значение Durable).
JMS-провайдер использует свойство subscriptionName в сочетании с clientId для однозначной идентификации потребителя сообщений. Если конечная точка определяет долгосрочную подписку, то необходимо задать значение для свойства subscriptionName. Подходящее значение для свойства subscriptionName обычно можно указать при размещении приложения, выполняющего функцию конечной точки.