@ Джеффри Найт: Позвольте мне попытаться уточнить, основываясь на моем опыте.
Мы понимаем, что MDB - это бины для потребления входящих сообщений. Теперь необходимо указать, к какому типу сообщений и из какого пункта назначения требуется обратиться конкретный MDB.
MDB в основном является конечной точкой сообщения.
До соответствия требованиям JCA:
поток в паутине был: -
входящее сообщение -> прослушивается слушателем сообщения -> слушателем
порты -> доставить в MDB
Поэтому, как правило, разработчик создает MDB и задает детали назначения сообщения в ejb-jar.xml следующим образом: -
<message-driven-destination>
<destination-type>javax.jms.Queue</destination-type>
</message-driven-destination>
<res-ref-name>jms/QCF</res-ref-name>
<resource-ref>
<res-type>javax.jms.QueueConnectionFactory</res-type>
<res-auth>Container</res-auth>
</resource-ref>
и развертывателю потребуется создать порт прослушивателя и связать развернутый MDB с портом прослушивателя. Указанная выше QueueConnectionFactory создана для создания соединений с очередью.
Опубликовать совместимые с JCA MDB:
После JCA MDB рассматривается как ресурс JCA. Спецификация JCA также включает API-интерфейсы инфраструктуры обмена сообщениями. Поток в случае JCA составляет: -
incoming message --> listened by Message listener --> Resource Adapter-->deliver to MDB
Теперь, поскольку JCA был создан для работы с любым типом ресурсов, будь то JDBC, JMS, EIS и т. Д., У него есть универсальный способ «Activation Spec» для создания конфигураций для любого адаптера. В файле ra.xml упоминается, какая спецификация активации необходима для работы данного адаптера. Спецификация активации - это не объект времени выполнения, это просто сведения о конфигурации, используемые адаптером ресурсов. В вышеуказанном случае адаптер JCA будет использовать соединение с фабрикой соединений очереди, указанной в спецификации активации. Таким образом, фабрика соединений в очереди в обоих случаях одинакова.
В случае websphere вы можете использовать SIB (Service Integration Bus) для обмена сообщениями ИЛИ внешнее программное обеспечение, например websphere MQ для обмена сообщениями.
В случае адресатов SIB для обмена сообщениями : -
SIB внедрил адаптер ресурсов JCA. Таким образом, MDB, использующий пункт назначения в SIB, может использовать спецификацию активации для указания деталей пункта назначения. Модуль адаптера ресурсов может взаимодействовать с механизмом обмена сообщениями и доставлять сообщения в MDB.
В случае внешней среды обмена сообщениями, такой как websphere MQ : -
Поскольку в websphere MQ не реализован ни один адаптер JCA, нам потребуется настроить порт прослушивателя для подключения к адресатам, расположенным в websphere MQ. Это порт слушателя, который доставит сообщения в MDB.
Короче говоря, в обоих случаях используется фабрика соединений с очередью для получения соединения с очередью. В одном случае это адаптер ресурсов (с информацией о конфигурации в форме спецификации активации), используемый для доставки сообщений, тогда как в другом случае это порт получателя (привязанный к очереди и фабрике), используемый для доставки сообщений.
Надеюсь, теперь это прояснится.