/** * Wrap this in an appropriate classloader before handling the request to ensure we * do not get ugly classloader failures */ private void handleClassLoaderAccess(EntityViewAccessProvider accessProvider, HttpServletRequest req, HttpServletResponse res, EntityView view) { // START classloader protection ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Object classloaderIndicator = accessProvider; ClassLoader newClassLoader = classloaderIndicator.getClass().getClassLoader(); // check to see if this access provider reports the correct classloader if (classloaderIndicator instanceof ClassLoaderReporter) { newClassLoader = ((ClassLoaderReporter) classloaderIndicator).getSuitableClassLoader(); } Thread.currentThread().setContextClassLoader(newClassLoader); // START run in classloader accessProvider.handleAccess(view, req, res); // END run in classloader } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } // END classloader protection }
/** * Wrap this in an appropriate classloader before handling the request to ensure we * do not get ugly classloader failures */ private void handleClassLoaderAccess(EntityViewAccessProvider accessProvider, HttpServletRequest req, HttpServletResponse res, EntityView view) { // START classloader protection ClassLoader currentClassLoader = Thread.currentThread().getContextClassLoader(); try { Object classloaderIndicator = accessProvider; ClassLoader newClassLoader = classloaderIndicator.getClass().getClassLoader(); // check to see if this access provider reports the correct classloader if (classloaderIndicator instanceof ClassLoaderReporter) { newClassLoader = ((ClassLoaderReporter) classloaderIndicator).getSuitableClassLoader(); } Thread.currentThread().setContextClassLoader(newClassLoader); // START run in classloader accessProvider.handleAccess(view, req, res); // END run in classloader } finally { Thread.currentThread().setContextClassLoader(currentClassLoader); } // END classloader protection }