Struts2和Spring集成线程安全

时间:2012-11-29 15:01:26

标签: spring struts2

我们正在使用Struts2-Spring集成,我的所有动作类都实现了SessionAware,示例代码到动作类,下面给出了它们的弹簧定义,

public class IRXxxxAction extends ActionSupport implements SessionAware {
  private Map session;

  public String execute()
  {//}

  public void setSession(Map<String, Object> session)
  {
    this.session = session;
  }
} 

弹簧配置

<bean name="userAction" class="com.IRXxxxAction" >
    <property name="adminDAO" ref="adminDAO" />
</bean>

如果我理解正确,每个自动连线的属性都是单例,所以如果上述情况属实,那么会话映射是否会在两个同时发出的请求之间共享?

此致

AYUSH

1 个答案:

答案 0 :(得分:6)

您在用户邮件列表中提出了相同的问题,如果您使用的是Struts2-Spring插件,请确保将bean范围设为prototype

Struts2在每个请求上创建新的操作实例,因为操作也作为模型工作,为了使线程安全,在每个请求上创建一个新对象并放置在值堆栈上。

不证明范围将被Spring视为singleton并且对于永远请求将返回相同的动作实例,这可能导致从数据损坏到奇怪行为的许多问题。