您的位置:首页 > 运维架构

关于Scope 'session' is not active for the current thread的问题

2014-04-23 23:18 495 查看
最近在做毕业设计,已近完成,却发现重大bug。

【问题概述】:我做的是订餐系统,测试时发现不用A客户可以看到B客户购物车中的餐品。由于我以前做过的类似的系统是没有用spring整合的,购物车这里可以与session绑定解决这个问题,如今使用spring整合却忽略了这个问题(好久没写代码了),如下本文就该问题给出解决方案,方案均来自互联网并非本人自己想到的,遂记下学习之。

【解决方法】:

造成这个问题的原因是spring默认所有的bean都为单例模式(scope="singleton"),固A,B客户操作的其实是同一个购物车实例。想要解决这个问题就需要将生命周期设置为session,即将Scope设置为scope="session",表示为一个session只创建一个实例。

将Scope设置为scope="session"需要在web.xml中做如下配置:

<!-- 开启Session机制 -->

<listener>

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

</listener>

此外还需要在spring配置文件中.
相应的spring bean配置中加入<aop:scoped-proxy/>

<bean id="cartService" class="com.lvsl.bysj.service.impl.CartServiceImpl" scope="session">

<aop:scoped-proxy/>

<property name="cartDao" ref="cartDao"></property>

</bean>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐