“在使用会话范围的spring bean时,在应用程序启动时初始化spring bean时出现”没有找到线程绑定的请求:“错误

时间:2012-01-24 12:38:16

标签: flex spring session

我正在开发基于flex的Web应用程序,并希望在会话范围设置一些属性,因此在spring bean中使用scope =“session”属性。以下是我的配置: -

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>

我仍然收到此错误: -

创建名为'scopedTarget.cacheLoader'的bean时出错:当前线程的作用域'session'无效;考虑为这个bean定义一个范围代理,如果你想从一个单例引用它;嵌套异常是java.lang.IllegalStateException:找不到线程绑定请求:您是指在实际Web请求之外的请求属性,还是在最初接收线程之外处理请求?如果您实际在Web请求中操作并仍然收到此消息,则您的代码可能在DispatcherServlet / DispatcherPortlet之外运行:在这种情况下,请使用RequestContextListener或RequestContextFilter来公开当前请求。

如果我在某些配置步骤中丢失或做错了,请建议我。

提前致谢。

1 个答案:

答案 0 :(得分:1)

在上下文配置中必须有一些单独的(默认)作用域bean引用“cacheLoader”。默认情况下,Spring在启动期间实例化单例bean,并且在此期间没有http会话可用,因此您的异常。

我建议将cacheLoader的特定于会话的部分进行分解,并确保没有单例引用它。