接口工程采用spring+struts2搭建,外部请求调用时,出现了部分请求返回值数据混乱,
[img]http://dl2.iteye.com/upload/attachment/0099/1195/313164f0-4025-3f8c-b05a-269521a7a445.jpg[/img]
查找原因如下:
spring 默认scope 是单例模式
这样只会创建一个Action对象
每次访问都是同一个Action对象,数据不安全
struts2 是要求 每次次访问 都对应不同的Action
scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象
解决方式:
利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题
单例对象,同一方法被多次调用的时候,不能包含公共对象,否则会造成数据混乱。
最终问题原因是,多个请求返回值使用同一个HttpServletResponse response返回结果导致。
[img]http://dl2.iteye.com/upload/attachment/0099/1195/313164f0-4025-3f8c-b05a-269521a7a445.jpg[/img]
查找原因如下:
spring 默认scope 是单例模式
这样只会创建一个Action对象
每次访问都是同一个Action对象,数据不安全
struts2 是要求 每次次访问 都对应不同的Action
scope="prototype" 可以保证 当有请求的时候 都创建一个Action对象
解决方式:
利用容器的scope="prototype"来保证每一个请求有一个单独的Action来处理,避免struts中Action的线程安全问题
单例对象,同一方法被多次调用的时候,不能包含公共对象,否则会造成数据混乱。
最终问题原因是,多个请求返回值使用同一个HttpServletResponse response返回结果导致。
Spring+Struts2接口工程中请求数据混乱问题解决方案
本文详细分析了在使用Spring+Struts2搭建接口工程时,部分请求返回值数据出现混乱的原因,并提出了解决方案:通过设置容器scope为prototype确保每个请求都有独立的Action对象处理,避免线程安全问题。
357

被折叠的 条评论
为什么被折叠?



