Search in sources :

Example 1 with ThreadBindingListener

use of org.apache.catalina.ThreadBindingListener in project tomcat by apache.

the class StandardContext method bind.

@Override
public ClassLoader bind(boolean usePrivilegedAction, ClassLoader originalClassLoader) {
    Loader loader = getLoader();
    ClassLoader webApplicationClassLoader = null;
    if (loader != null) {
        webApplicationClassLoader = loader.getClassLoader();
    }
    if (originalClassLoader == null) {
        if (usePrivilegedAction) {
            PrivilegedAction<ClassLoader> pa = new PrivilegedGetTccl();
            originalClassLoader = AccessController.doPrivileged(pa);
        } else {
            originalClassLoader = Thread.currentThread().getContextClassLoader();
        }
    }
    if (webApplicationClassLoader == null || webApplicationClassLoader == originalClassLoader) {
        // null to indicate this.
        return null;
    }
    ThreadBindingListener threadBindingListener = getThreadBindingListener();
    if (usePrivilegedAction) {
        PrivilegedAction<Void> pa = new PrivilegedSetTccl(webApplicationClassLoader);
        AccessController.doPrivileged(pa);
    } else {
        Thread.currentThread().setContextClassLoader(webApplicationClassLoader);
    }
    if (threadBindingListener != null) {
        try {
            threadBindingListener.bind();
        } catch (Throwable t) {
            ExceptionUtils.handleThrowable(t);
            log.error(sm.getString("standardContext.threadBindingListenerError", getName()), t);
        }
    }
    return originalClassLoader;
}
Also used : ThreadBindingListener(org.apache.catalina.ThreadBindingListener) PrivilegedGetTccl(org.apache.tomcat.util.security.PrivilegedGetTccl) WebappLoader(org.apache.catalina.loader.WebappLoader) Loader(org.apache.catalina.Loader) PrivilegedSetTccl(org.apache.tomcat.util.security.PrivilegedSetTccl)

Aggregations

Loader (org.apache.catalina.Loader)1 ThreadBindingListener (org.apache.catalina.ThreadBindingListener)1 WebappLoader (org.apache.catalina.loader.WebappLoader)1 PrivilegedGetTccl (org.apache.tomcat.util.security.PrivilegedGetTccl)1 PrivilegedSetTccl (org.apache.tomcat.util.security.PrivilegedSetTccl)1