Область 'сессия' не активна для текущего потока; IllegalStateException: не найден связанный с потоком запрос
У меня есть контроллер, который яЯ хотел бы быть уникальным для каждой сессии. Согласно весенней документации есть две детали реализации:
1. Начальная веб-конфигурация
Чтобы поддерживать область действия bean-компонентов на уровне запросов, сеансов и глобальных сеансов (bean-объекты bean-scoped), перед определением ваших bean-компонентов требуется небольшая начальная настройка.
я добавил следующее в мойweb.xml
как показано в документации:
org.springframework.web.context.request.RequestContextListener
2. Область применения бобов как зависимости
Если вы хотите внедрить (например) bean-объект области действия HTTP-запроса в другой bean-компонент, вы должны внедрить прокси-сервер AOP вместо этого bean-объекта. I '
аннотировал боб@Scope
предоставляяproxyMode
как показано ниже:
@Controller
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class ReportBuilder implements Serializable {
...
...
}
проблема
Несмотря на вышеуказанную конфигурацию, я получаю следующее исключение:
org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'scopedTarget.reportBuilder»: Объем 'сессия» не активен для текущего потока; рассмотрите возможность определения прокси-объекта с заданной областью действия для этого компонента, если вы собираетесь ссылаться на него из одноэлементного объекта; Вложенное исключение - java.lang.IllegalStateException: не найден привязанный к потоку запрос: Вы ссылаетесь на атрибуты запроса вне фактического веб-запроса или обрабатываете запрос вне первоначально получающего потока? Если вы действительно работаете в веб-запросе и по-прежнему получаете это сообщение, ваш код, вероятно, выполняется за пределами DispatcherServlet / DispatcherPortlet: в этом случае используйте RequestContextListener или RequestContextFilter, чтобы отобразить текущий запрос.
Обновление 1
Ниже мой компонент сканирования. У меня есть следующее в:web.xml
contextClass
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
contextConfigLocation
org.example.AppConfig
org.springframework.web.context.ContextLoaderListener
И следующее в:AppConfig.java
@Configuration
@EnableAsync
@EnableCaching
@ComponentScan("org.example")
@ImportResource("classpath:applicationContext.xml")
public class AppConfig implements AsyncConfigurer {
...
...
}
Обновление 2I '
Мы создали воспроизводимый контрольный пример. Это гораздо меньший проект, поэтому есть различия, но возникает та же ошибка. Там'с довольно много файлов, так что яВыложил это какtar.gz
вmegafileupload.