С точки зрения API нет никакой разницы между "JCA JMS" и "Plain JMS".Разница в том, как они ведут себя .Фабрика соединений JMS на основе JCA имеет 2 больших преимущества по сравнению с фабрикой соединений JMS:
- Пул - Вообще говоря, когда соединение "создается" из JCA-соединенияФабрика соединений JMS базовое физическое соединение извлекается из пула, а когда соединение «закрыто», базовое физическое соединение возвращается в пул.Это устраняет снижение производительности при фактическом создании и разрушении физического соединения, что позволяет клиентам писать таким образом, который обычно считается анти-паттерном (например, «создание» и «закрытие» соединения для каждого отправленного сообщения).
- Автоматическое включение в транзакции JTA - В большинстве случаев приложения, работающие на сервере приложений Java EE, которые принимают сообщения JMS, делают это через MDB.По умолчанию потребление сообщения в MDB (то есть выполнение
onMessage
) происходит в транзакции JTA.Если в процессе обработки MDB (например, для отправки сообщения) используется фабрика соединений JMS на основе JCA, то логика JCA автоматически включит сеанс в транзакцию JTA, чтобы использовать сообщение и отправить сообщение.являются атомарной операцией (при условии, что фабрика соединений на основе JCA поддерживает XA).
Я ожидаю, что вы могли бы написать код приложения, который будет вести себя одинаково как в WebLogic, так и в JBoss AS.