Объекты весенней сессии в @Scheduled - PullRequest
2 голосов
/ 04 марта 2012

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

@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
  • В моем веб-приложении все в порядке, поскольку доступна область сеанса.

  • В моих тестах JUnit все также хорошо, так как я использую WebContextTestExecutionListener ( link ), который регистрирует область потока для области сеанса

  • Но когда вызывается метод с @Scheduled, я получаю исключение, поскольку нет области действия сеанса.

Теперь мой вопрос: как можноЯ зарегистрировал область потока для области сеанса в моем методе @Scheduled?

Я пробовал что-то вроде этого: beanFactory.registerScope("session", new SimpleThreadScope());, но это также переопределяет область сеанса моего веб-приложения: (*

Ответы [ 2 ]

2 голосов
/ 04 марта 2012

Запланированные задачи не имеют ничего общего с областью сеансов, сеанс может быть даже завершен к моменту выполнения запланированной задачи. Если для запланированной задачи требуются данные из сеанса, просто передайте новый объект, содержащий данные, в запланированный метод.

0 голосов
/ 19 марта 2012

Оказалось, этот вопрос очень сильно связан с: запланированной весной 3 задачи 3 раза .Поскольку мои ContextLoaderListener и DispatcherServlet указывали на одну и ту же конфигурацию контекста, области действия были переопределены.@ skaffman / Wesley: Спасибо за ваши комментарии.

...