You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2014/01/23 13:18:14 UTC

svn commit: r1560660 - /tomcat/trunk/java/org/apache/catalina/session/StandardSession.java

Author: markt
Date: Thu Jan 23 12:18:14 2014
New Revision: 1560660

URL: http://svn.apache.org/r1560660
Log:
Migrate to Context bind()/unbind()

Modified:
    tomcat/trunk/java/org/apache/catalina/session/StandardSession.java

Modified: tomcat/trunk/java/org/apache/catalina/session/StandardSession.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/session/StandardSession.java?rev=1560660&r1=1560659&r2=1560660&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/session/StandardSession.java (original)
+++ tomcat/trunk/java/org/apache/catalina/session/StandardSession.java Thu Jan 23 12:18:14 2014
@@ -53,7 +53,6 @@ import org.apache.catalina.Manager;
 import org.apache.catalina.Session;
 import org.apache.catalina.SessionEvent;
 import org.apache.catalina.SessionListener;
-import org.apache.catalina.ThreadBindingListener;
 import org.apache.catalina.TomcatPrincipal;
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.tomcat.util.ExceptionUtils;
@@ -805,7 +804,7 @@ public class StandardSession implements 
             // listeners
             ClassLoader oldContextClassLoader = null;
             try {
-                oldContextClassLoader = bindThread(context);
+                oldContextClassLoader = context.bind(Globals.IS_SECURITY_ENABLED, null);
                 if (notify) {
                     Object listeners[] = context.getApplicationLifecycleListeners();
                     if (listeners != null && listeners.length > 0) {
@@ -838,7 +837,7 @@ public class StandardSession implements 
                     }
                 }
             } finally {
-                unbindThread(context, oldContextClassLoader);
+                context.unbind(Globals.IS_SECURITY_ENABLED, oldContextClassLoader);
             }
 
             if (ACTIVITY_CHECK) {
@@ -879,99 +878,6 @@ public class StandardSession implements 
     }
 
 
-    protected ClassLoader bindThread(Context context) {
-
-        ClassLoader contextClassLoader = null;
-        ThreadBindingListener threadBindingListener = null;
-        if (context != null) {
-            if (context.getLoader() != null && context.getLoader().getClassLoader() != null) {
-                contextClassLoader = context.getLoader().getClassLoader();
-            }
-            threadBindingListener = context.getThreadBindingListener();
-        }
-        if (threadBindingListener == null || contextClassLoader == null) {
-            return null;
-        }
-
-        if (Globals.IS_SECURITY_ENABLED) {
-            return AccessController.doPrivileged(new PrivilegedBind(contextClassLoader, threadBindingListener));
-        } else {
-            ClassLoader oldContextClassLoader =
-                    Thread.currentThread().getContextClassLoader();
-            if (oldContextClassLoader == contextClassLoader) {
-                return null;
-            } else {
-                Thread.currentThread().setContextClassLoader(contextClassLoader);
-                threadBindingListener.bind();
-                return oldContextClassLoader;
-            }
-        }
-
-    }
-
-    protected class PrivilegedBind implements PrivilegedAction<ClassLoader> {
-        private ClassLoader contextClassLoader;
-        private ThreadBindingListener threadBindingListener;
-
-        PrivilegedBind(ClassLoader contextClassLoader, ThreadBindingListener threadBindingListener) {
-            this.contextClassLoader = contextClassLoader;
-            this.threadBindingListener = threadBindingListener;
-        }
-
-        @Override
-        public ClassLoader run() {
-            ClassLoader oldContextClassLoader =
-                    Thread.currentThread().getContextClassLoader();
-            if (oldContextClassLoader == contextClassLoader) {
-                return null;
-            } else {
-                Thread.currentThread().setContextClassLoader(contextClassLoader);
-                threadBindingListener.bind();
-                return oldContextClassLoader;
-            }
-        }
-    }
-
-    protected void unbindThread(Context context, ClassLoader oldContextClassLoader) {
-
-        if (oldContextClassLoader == null) {
-            return;
-        }
-        ThreadBindingListener threadBindingListener = null;
-        if (context != null) {
-            threadBindingListener = context.getThreadBindingListener();
-        }
-        if (threadBindingListener == null) {
-            return;
-        }
-
-        if (Globals.IS_SECURITY_ENABLED) {
-            AccessController.doPrivileged(new PrivilegedUnbind(oldContextClassLoader, threadBindingListener));
-        } else {
-            threadBindingListener.unbind();
-            Thread.currentThread().setContextClassLoader(oldContextClassLoader);
-        }
-
-    }
-
-    protected class PrivilegedUnbind implements PrivilegedAction<Void> {
-        private ClassLoader oldContextClassLoader;
-        private ThreadBindingListener threadBindingListener;
-
-        PrivilegedUnbind(ClassLoader oldContextClassLoader, ThreadBindingListener threadBindingListener) {
-            this.oldContextClassLoader = oldContextClassLoader;
-            this.threadBindingListener = threadBindingListener;
-        }
-
-        @Override
-        public Void run() {
-            threadBindingListener.unbind();
-            Thread.currentThread().setContextClassLoader(oldContextClassLoader);
-            return null;
-        }
-    }
-
-
     /**
      * Perform the internal processing required to passivate
      * this session.



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org