我有一个需要 50 秒来处理的大动作。但是,与此同时,我还有另一个可以在服务器上处理的操作(通过单击链接)。
但是,如果我的第二个操作尝试访问我的第一个操作放置的会话属性,则它们在第一个操作结束之前可用。
这是我的大动作:
public String bigAction() {
HttpSession session = request.getSession();
synchronized (session) {
for(int i = 0 ; i < 100000 ; ++i)
session.setAttribute("foo_"+i, "bar");
}
return SUCCESS;
}
这是我的小动作:
public String smallAction() {
HttpSession session = request.getSession();
synchronized (session) {
session.getAttribute("foo_1", "bar");
}
return SUCCESS;
}
第一个动作:--------------------------------------------------------- 第二个动作: --- -- --- - ---
因此,在此示例中,我的第二个操作需要由第一个操作创建的会话属性,但实际上它们并不存在。
如何同步我的会话?