Session Leak Detector
Introduction
The session leak detector is able to help you debug your application based on JCR when you suspect that you have a bug related to a wrong usage of JCR sessions. It works by creating a queue of weak references to JCR sessions and the queue is periodically cleaned. When a session reference is dequeued and is not cleared it is considered as a leaked session. Obviously what matters here is the time by which a session is stale known as max age. If the max age is too short period it will suspect that many sessions are leaked although they are not. The default max age value is configured at 2 minutes.Activation
Setting the virtual machine system property exo.jcr.session.tracking.active to true activates the session detector with a default time period of 2 minutes. You can set the max age with the virtual machine system property exo.jcr.jcr.session.tracking.maxage in seconds. The default value, if you don't override it is 120 (2 minutes). Example : You can do this easily in eXo.sh. For example :JCR_SESSION_TRACK="-Dexo.jcr.session.tracking.active=true -Dexo.jcr.jcr.session.tracking.maxage=60" JAVA_OPTS="$JCR_SESSION_TRACK $JAVA_OPTS $LOG_OPTS $SECURITY_OPTS $EXO_OPTS $EXO_CONFIG_OPTS $REMOTE_DEBUG"
Report
When a session is considered as leaked, debug information is printed on the console with a stack trace of the code that created the session in order to help you find out where the leaked session was created at runtime. Example :TODO See the top of stacktrace is XXX
on 13/08/2009 at 08:37