0
votes

I am working on a flex based web application and want to set some properties at session scope and hence using scope="session" attribute in a spring bean. Following are my configurations:-

Spring bean:-

<bean id="cacheLoader"  class="com.....CacheLoader" scope="session">
<property name="commonService" ref="commonService" />     
<aop:scoped-proxy></aop:scoped-proxy>
</bean>

web.xml

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>

Still i am getting this error:-

Error creating bean with name 'scopedTarget.cacheLoader': 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.

Please suggest me if i am missing on some configuration steps or doing something wrong.

Thanks in advance.

1

1 Answers

1
votes

There must be some singleton (default) scoped bean referring to "cacheLoader" in your context configuration. Spring by default instantiates singleton beans during startup and no http session is available during that time hence your exception.

I would recommend factoring out session-specific part of the cacheLoader and make sure no singleton references it.