Прежде всего, я последовал предложению в этой теме: https://stackoverflow.com/a/26327870/1005607
В моем приложении с графическим интерфейсом есть бин Session-scoped.В приложении также есть процессы Job (не-GUI), которые обращаются к этому компоненту вне структуры запроса.
Версия Spring: 4.1.5
Определение::
Класс сессионного компонента (обратите внимание на ScopedProxyMode)
@Component
@Scope(value="session", proxyMode=ScopedProxyMode.TARGET_CLASS)
public class MyBean implements Serializable {
//...
}
web.xml
имеет ссылку на RequestContextListener:
<listener>
<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
В некоторых местах задание ссылается на сессионный компонентследующим образом
@Autowired
private MyBean myBean;
Когда задание без графического интерфейса обращается к этому бину, я все еще получаю сообщение об ошибке:
org.springframework.beans.factory.BeanCreationException:
Error creating bean with name 'scopedTarget.myBean':
Scope 'session' is not active for the current thread;
consider defining a scoped proxy for this bean if you intend to refer to it
from a singleton; nested exception is
java.lang.IllegalStateException: No thread-bound request found:
Are you referring to request attributes outside of an actual web request,
or processing a request outside of the originally receiving thread?
If you are actually operating within a web request and still receive
this message, your code is probably running outside
of DispatcherServlet/DispatcherPortlet: In this case,
use RequestContextListener or RequestContextFilter to expose
the current request.
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:352)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
...