Я думаю, что я не понимаю что-то правильно с JMS и JTA.Я работаю в контейнере Java EE со всеми CMT.Вот что я делаю:
- В SLSB напишите что-нибудь в базу данных
- Из того же метода SLSB отправьте сообщение в очередь JMS
- MDB в том же контейнере слушает очередь JMS и получает сообщение
- MDB читает базу данных
Проблема в том, что MDB не см. Изменения, внесенные в базу данных на шаге 1.
Я проверил, что шаги 1 и 2 происходят внутри одной транзакции XA, как и ожидалось.Я ожидаю, что вторая транзакция XA начнется на шаге 3 после того, как первый XA будет зафиксирован.Но кажется, что MDB получает сообщение до того, как транзакция XA, которая опубликовала сообщение, была подтверждена.
Мои ожидания неверны, и то, что я вижу, нормально?
Я работаю под JBoss6. SLSB является локальным.И SLSB, и MDB находятся в одном приложении.