EJBs - Архитектурный вопрос - PullRequest
0 голосов
/ 04 января 2012

В настоящее время я пишу новое EJB-приложение, которое, как правило, должно получать сообщения от веб-службы и запускать процесс загрузки на основе содержимого этого сообщения. Это приложение будет работать на Glassfish 3.1.1.

Моей первой идеей было создание одноэлементного компонента, который будет считывать сообщения из веб-службы и использовать сессионный компонент с состоянием для инициирования и обработки самой загрузки. Мне нужно использовать бины с состоянием, потому что мне нужно иметь конвертационное состояние между моим синглтоном и бином с состоянием (состояние загрузки и т. Д.)

«Проблема» заключается в том, что если я получаю несколько сообщений от веб-службы, я должен начать несколько загрузок параллельно, каждая загрузка, конечно, имеет свой собственный контекст. Как мне достичь этого, как если бы я вызывал сессионный компонент с сохранением состояния из моего синглтона, я всегда получал один и тот же компонент, правильно? Единственное решение, которое я вижу, это использовать потоки, которые будут созданы и запущены из моего синглтона, но это не разрешено спецификацией EJB ...

Спасибо за вашу помощь!

Ответы [ 2 ]

1 голос
/ 04 января 2012

Не думаю, что вам нужен сессионный компонент с состоянием.Суть bean-компонента с состоянием заключается в том, что он поддерживает состояние в рамках сеанса, который представляет собой отношения с конкретным клиентом.В вашем случае не существует одной загрузки для каждого клиента (есть ли какие-либо клиенты?), Что означает, что это не подходящая область.

Если вы просто хотите использовать несколько потоков, используйте компонент без состояния с @ Асинхронный метод.Вам, вероятно, придется обрабатывать обновления состояния с помощью обратного вызова в синглтоне.

0 голосов
/ 04 января 2012

Зачем вам здесь синглтон?Разве сессионный компонент с состоянием не достаточно хорош?Вы хотите одновременную загрузку, вы хотите отслеживать состояние, так зачем использовать синглтон?Можете ли вы объяснить немного больше?

...