Struts2会话存储位置和管理

我正在阅读Struts2 In Action,它表示每个请求都会创建一个ActionContext ,一个ValueStack和一个Action实例,因此它们是线程安全的。 我想知道框架如何管理会话,因为它不能存储在这些位置,实际Map存储在哪里,以及框架如何管理对该Map的并发访问?

http会话存储在SessionMap中, SessionMap在其他上下文映射中由调度程序在提供请求时存储在操作上下文中。 会话映射是http会话对象的包装,并且使用http会话对象监视器同步诸如get / put类的操作。 它只是同步对http会话属性的访问,但是提供了Map实现。