序列化到会话数据的访问
Servlet API 支持对给定服务器实例中会话的并发访问。 WebSphere® Application Server 提供了一个选项,用于防止对给定服务器实例中的会话进行并发访问,以便会话的并发修改不会在给定服务器实例中发生。
有关此任务
通过同步基于会话的请求来防止并发访问会话。 当此功能打开时,在调用 servlet 前为请求获取会话,并通过在 servlet 启动时锁定会话来同步请求。 注意,同步基于会话的内存复制。 所以此功能无法在会话亲缘关系失败时,根据会话跨服务器序列化请求。
还可使用串行访问会话数据功能将 servlet 或 JavaServer Pages 中的会话对象同步化。 因为会话管理器可能会发生死锁,所以应用程序不能将其 servlet 或 JavaServer Pages 中的会话对象同步。 发生死锁的原因是会话管理器只应该使用一个锁定机制。 通过使用配置选项“允许串行访问”,可确保一次只有一个请求能够访问会话。
仅当同一会话数据的并发修改成为可能,而且不是应用程序所期望时,才使用此功能。 此功能具有序列化基于会话的请求的开销。
执行以下操作同步会话访问:
过程
- 选择要对其序列化会话访问权的会话管理级别 。
- 在 "序列化会话访问" 下,单击 允许串行访问。
- 在“最大等待时间”框中,输入 servlet 在继续执行前将等待会话的时间量(以毫秒计)。 缺省为 120000 毫秒或 2 分钟。
- 如果希望 servlet 获取对会话的访问权并继续正常执行 (即使该会话仍被另一个 servlet 锁定) ,请选择 允许在超时时进行访问 。 如果您不选择此框,当会话请求超时时 servlet 执行将异常终止。
- 单击应用。
- 单击保存。