У меня есть MDB, развернутый на Jboss 4.2.2, и клиент на том же сервере, который создает сообщения и ожидает ответа от MDB через временную очередь, созданную до отправки сообщения.
Когда я запускаю клиент, я вижу, что он создает сообщение, помещает его в очередь и ждет ответа (пока проблем нет) ... но когда я проверяю журналы, я вижу, что истекло время ожидания и нет ответа получен. Когда тайм-аут наступает и метод клиента завершается, MDB начинает обработку сообщения, которое должно было быть обработано в тот момент, когда клиент поместил его в очередь. Как следствие этой проблемы с синхронизацией, когда MDB пытается ответить на временную очередь, происходит сбой, поскольку клиент уже ушел.
Если я запускаю тот же клиент с удаленного сервера, у меня нет проблем... MDB сразу забирает сообщение из очереди, и клиент получает свой ответ сразу после завершения обработки.
Я использую транзакции, управляемые контейнером. Я подозреваю, что это как-то связано с этим... Я думаю, что "отправить сообщение/получить ответ" клиента можно было бы считать транзакцией до того, как он поместит сообщение в очередь... но я не уверен, что это верно. Если это так, то почему я не видел такого же поведения удаленного клиента? является ли транзакция, управляемая клиентом, настройкой по умолчанию, и это то, что использовал мой удаленный сервер?
Есть идеи, как это исправить?
Заранее спасибо! ПиДжей