Как реализовать опрос в Spring вместе с шаблоном Observer - PullRequest
0 голосов
/ 27 июня 2011

Я пытаюсь реализовать службу, которая асинхронно выполняет опрос через поток, а затем уведомляет список наблюдателей.

Архитектура выглядит следующим образом: несколько одновременных jsf сессионных компонентов можетзарегистрируйтесь в сервисе singleton и получите ветку уведомлений в случае появления новых обновлений данных.Получив уведомление, каждый сессионный компонент jsf выполняет некоторые действия, получая доступ к другим пружинным компонентам в области сеанса (которые определены в context.xml).

Проблема, с которой я сталкиваюсьТеперь поток обновления не может получить доступ к этим весенним bean-компонентам в области сеанса, поскольку их прокси не может быть разрешен из потока обновления, что понятно, так как поток создается вне контекста приложения и не имеет видимости доступных bean-компонентов.Но тогда, как я могу реализовать такой механизм в Spring?

Я также пытался использовать bean-компонент executor задачи, надеясь, что Spring сделает его каким-то образом частью текущего контекста, но это не удалось (пружина в области сеанса)bean-компоненты, вызываемые уведомленными сессионными bean-компонентами jsf, не могут быть разрешены).

Любая помощь будет высоко ценится.Спасибо.

РЕДАКТИРОВАТЬ: Добавлена ​​дополнительная информация о коммуникационном потоке.

Каждый раз, когда новый пользователь генерирует новый сеанс, создается соответствующий сессионный компонент jsf.Этот bean-компонент (после того, как он связан с http-сессией) затем регистрируется в сервисе Spring (singleton).Этот сервис активирует механизм опроса, когда хотя бы один сессионный компонент jsf зарегистрирован (следовательно, когда есть хотя бы один наблюдатель).Когда служба узнает, что доступно новое обновление, она уведомит зарегистрированных наблюдателей, вызвав их метод "update ()".Внутри этого метода каждый наблюдатель (или сессионный компонент jsf) будет выполнять некоторые действия через некоторые другие бины весенних сессий, которые доступны в качестве прокси.Это та точка, в которой «связь» заканчивается неудачей, поскольку исходный поток опроса (тот, что находится в службе обновлений) не знает, как разрешить пружинные прокси.Есть ли способ сделать эту информацию доступной для темы опроса?Спасибо.

1 Ответ

0 голосов
/ 27 июня 2011

Как насчет использования объекта, который известен как сессионный компонент JSF и Spring в качестве наблюдателя?Вам нужно будет опрашивать этот объект при каждом запросе.Но в этом случае вы можете просто опросить первоисточник.

...