Serializing access to session data
The Servlet API supports concurrent access to a session in a given server instance. WebSphere Application Server provides an option to prevent the concurrent access to a session in a given server instance so that concurrent modification of a session does not occur in a given server instance. Preventing concurrent access to a session is achieved by synchronizing the requests based on session. When this feature is turned on, a session is obtained for the request before invoking the servlet and requests are synchronized by locking the session for the servlet initiation time. Note that synchronization is based on the memory copy of session. So this feature cannot serialize requests across servers based on session when session affinity fails.
We can also use the serializing access to session data feature to synchronize session objects inside of servlets or JavaServer pages. Applications cannot synchronize session objects inside of their servlets or JSP because a deadlock with the session manager may occur. The deadlock occurs because the session manager does not expect the use of more than one locking mechanism. We can ensure that only one request can access the session at a time through the use of the configuration option, Allow serial access. Use this feature only when concurrent modification of the same session data is possible and is not desirable by the application. This feature has overhead of serializing the requests based on a session.
Do the following to synchronize session access:
- Select the level of Session Management on which to serialize session access.
- Under Serialize Session access, click Allow serial access.
- In the Maximum wait time box, type the amount of time, in milliseconds, a servlet waits on a session before continuing execution. The default is 120000 milliseconds or two minutes.
- Select Allow access on timeout if we want the servlet to gain access to the session and continue normal execution even if the session is still locked by another servlet. If we do not select this box, the servlet execution will abort when the session request times out.
- Click Apply.
- Click Save.
Related tasks
Configure session tracking