Вы правы, отметив, что фабрика соединений JMS не может быть настроена так, чтобы не подключаться к текущей транзакции.Я немного не уверен в том, чего вы пытаетесь добиться здесь, но я собираюсь сделать следующее предположение:
- Клиент отправляет сообщение
- Слушатель принимает сообщение и отправляет ответ
- Клиент получает ответ
В этом случае клиент должен отправить и зафиксировать сообщение, прежде чем слушатель получит его для отправки ответа.Слушатель может получать и отвечать за одну транзакцию, но клиенту нужны две.Кроме того, я предполагаю, что клиент является EJB.
Одним из решений этой проблемы было бы использование управляемых компонентом транзакций.В этом случае вы можете вручную начать транзакцию и зафиксировать ее около 1, а затем около 3. Это приведет к отправке сообщения.
Другим решением было бы выполнить метод EJB с помощью requireNew иполучить в другом EJB-методе с RequNew.Затем клиент вызывает метод EJB отправки, а затем метод EJB получения, и каждый метод имеет свою собственную транзакцию.