ASF Bugzilla – Attachment 14593 Details for
Bug 33711
Memory leak (classloader) with Log4J and Single Sign On.
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Always recycle sessions; add activate/passivate events and use passivate for SSO
patch.txt (text/plain), 5.45 KB, created by
Remy Maucherat
on 2005-03-30 15:03:57 UTC
(
hide
)
Description:
Always recycle sessions; add activate/passivate events and use passivate for SSO
Filename:
MIME Type:
Creator:
Remy Maucherat
Created:
2005-03-30 15:03:57 UTC
Size:
5.45 KB
patch
obsolete
>Index: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Session.java >=================================================================== >RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Session.java,v >retrieving revision 1.4 >diff -u -r1.4 Session.java >--- jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Session.java 27 Feb 2004 14:58:39 -0000 1.4 >+++ jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/Session.java 30 Mar 2005 13:02:18 -0000 >@@ -51,6 +51,18 @@ > public static final String SESSION_DESTROYED_EVENT = "destroySession"; > > >+ /** >+ * The SessionEvent event type when a session is activated. >+ */ >+ public static final String SESSION_ACTIVATED_EVENT = "activateSession"; >+ >+ >+ /** >+ * The SessionEvent event type when a session is passivated. >+ */ >+ public static final String SESSION_PASSIVATED_EVENT = "passivateSession"; >+ >+ > // ------------------------------------------------------------- Properties > > >Index: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java >=================================================================== >RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java,v >retrieving revision 1.22 >diff -u -r1.22 SingleSignOn.java >--- jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java 23 Feb 2005 19:27:56 -0000 1.22 >+++ jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/authenticator/SingleSignOn.java 30 Mar 2005 13:02:19 -0000 >@@ -275,7 +275,8 @@ > public void sessionEvent(SessionEvent event) { > > // We only care about session destroyed events >- if (!Session.SESSION_DESTROYED_EVENT.equals(event.getType())) >+ if (!Session.SESSION_DESTROYED_EVENT.equals(event.getType()) >+ && (!Session.SESSION_PASSIVATED_EVENT.equals(event.getType()))) > return; > > // Look up the single session id associated with this session (if any) >@@ -294,9 +295,10 @@ > // If so, we'll just remove the expired session from the > // SSO. If the session was logged out, we'll log out > // of all session associated with the SSO. >- if ((session.getMaxInactiveInterval() > 0) >+ if (((session.getMaxInactiveInterval() > 0) > && (System.currentTimeMillis() - session.getLastAccessedTime() >= >- session.getMaxInactiveInterval() * 1000)) { >+ session.getMaxInactiveInterval() * 1000)) >+ || (Session.SESSION_PASSIVATED_EVENT.equals(event.getType()))) { > removeSession(ssoId, session); > } else { > // The session was logged out. >Index: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java >=================================================================== >RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java,v >retrieving revision 1.28 >diff -u -r1.28 StandardManager.java >--- jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java 7 Feb 2005 21:56:32 -0000 1.28 >+++ jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardManager.java 30 Mar 2005 13:02:19 -0000 >@@ -556,6 +556,8 @@ > session.expire(false); > } catch (Throwable t) { > ; >+ } finally { >+ session.recycle(); > } > } > >@@ -670,12 +672,16 @@ > Session sessions[] = findSessions(); > for (int i = 0; i < sessions.length; i++) { > StandardSession session = (StandardSession) sessions[i]; >- if (!session.isValid()) >- continue; > try { >- session.expire(); >+ if (session.isValid()) { >+ session.expire(); >+ } > } catch (Throwable t) { > ; >+ } finally { >+ // Measure against memory leaking if references to the session >+ // object are kept in a shared field somewhere >+ session.recycle(); > } > } > >Index: jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java >=================================================================== >RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java,v >retrieving revision 1.55 >diff -u -r1.55 StandardSession.java >--- jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java 25 Mar 2005 16:49:28 -0000 1.55 >+++ jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/session/StandardSession.java 30 Mar 2005 13:02:19 -0000 >@@ -737,6 +737,9 @@ > */ > public void passivate() { > >+ // Notify interested session event listeners >+ fireSessionEvent(Session.SESSION_PASSIVATED_EVENT, null); >+ > // Notify ActivationListeners > HttpSessionEvent event = null; > String keys[] = keys(); >@@ -764,6 +767,9 @@ > */ > public void activate() { > >+ // Notify interested session event listeners >+ fireSessionEvent(Session.SESSION_ACTIVATED_EVENT, null); >+ > // Notify ActivationListeners > HttpSessionEvent event = null; > String keys[] = keys();
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 33711
:
14379
|
14584
| 14593