API-интерфейсы JMS предоставляют методы для пакетирования нескольких сообщений, отправляемых и получаемых за одну транзакцию. Эти методы предназначены для использования в неуправляемых клиентских средах. Чтобы сделать это, нужно создать транзакционный сеанс (или JMSContext), а затем вызвать методы commit или rollback.
В управляемой среде спецификация фактически говорит, что вы не можете сделать это, а транзакционные параметры игнорируются , Это связано с тем, что если вы выполняете работу JMS в глобальной транзакции, то эту работу необходимо координировать с этой транзакцией, поэтому принятие / откат не имеет смысла.
Традиционный сервер приложений WebSphere (по историческим причинам c) , позволяет создавать транзакционный сеанс JMS и вызывать фиксацию и откат вне глобальной транзакции (если вы находитесь внутри нее, следуя предписанному поведению spe c) при использовании IBM MQ.
Правило, о котором идет речь ищет создание транзакционного сеанса JMS или JMSContext и сообщает о возможной проблеме.
Если ваш код выполняется в глобальной транзакции, это ложное срабатывание, и вы можете его игнорировать. Если вы работаете вне глобальной транзакции и используете провайдера MQ JMS, вам следует проверить свой код, чтобы выполнить одно из следующих действий:
- Переместить код в глобальную транзакцию
- Переписать код, чтобы перестать полагаться на методы фиксации / отката