When a session is persisted in a database, WebSphere does not correctly invoke the valueUnbound() method when that session expires, resulting in memory leaks when running ATG applications. The /atg/dynamo/servlet/sessiontracking/SessionInvalidationService component handles this problem by checking the current set of child sessions known to ATG and comparing the last accessed time to the session’s configured timeout, as specified by the application server. If the child session has timed out, it is removed from the list of sessions. When all children of a parent session have been removed, all session-scoped components for that session are cleaned up. The SessionInvalidationService runs on a configurable schedule, with a default of every 5 minutes.

Note that this component does not invalidate the session or interfere in any way with the application server’s own cleanup work; it touches only ATG-created items. For even more safety, you can set the additionalTimeoutMinutes property, in which case the service waits the specified additional number of minutes above the application server’s configured session timeout before performing the cleanup.

If debugging is turned on, the SessionInvalidationService component indicates when it performs a check, and the last accessed time for each child session. The component is defined in the DafEar.WebSphere module, which is run automatically on WebSphere.

loading table of contents...