Я знаю, что не должен возиться с потоками в контейнерах EJB, поэтому я не знаю, как правильно сделать следующее в среде EJB:
Вовлечены :
- Сессионный компонент без сохранения состояния "Клиент"
- Сессионный компонент без сохранения состояния "Сервер"
- MessageQueue "Очередь"
- Управляемый сообщениями компонент "Mdb", который обрабатывает сообщения из "очереди"
- n Сессионные компоненты без состояния от W1 до Wn
Сценарий: :
Клиент вызывает метод Сервер , который, в свою очередь, отправляет несколько сообщений в Очередь . После этого Сервер делает другие вещи. Тем временем, Mdb принимает сообщение, вызывает Wi , который выполняет довольно долгий расчет и получает результат. Теперь Mdb дает результат для Server . Когда Сервер получает все «результаты» для каждого отправленного сообщения, он делает еще несколько вычислений с результатами из W с и возвращает этот результат Клиенту .
Моя проблема :
В Java SE я бы просто сделал .wait (), чтобы Сервер ждал результатов W с после того, как Сервер выполнил работу после отправка сообщений. Тогда mdb будет .notify (), когда он установит результаты. Поскольку я не должен возиться с потоками в контейнерах EJB, как говорится в спецификации, я заблудился, потому что не нашел подходящего способа добиться того же поведения в среде EJB.
Любая помощь по этой проблеме будет признательна, спасибо заранее.
P.S .: Я работаю с JBoss 5.1.0, на случай, если есть какие-либо специфические меры поставщика для решения этой проблемы.