@Override public void stop() { super.stop(); // Just in case, to avoid leaking class resolver which references classloader baseCfg.setClassResolver(null); // Remove the ExternalizerTable reference from all the threads. // Don't need to re-populate the proxy on start, as the component is volatile. proxy.clear(); }
@Override public void start() { super.start(); baseCfg.setObjectTable(externalizerTable); proxy = new ExternalizerTableProxy(externalizerTable); baseCfg.setObjectTable(proxy); ClassResolver classResolver = globalCfg.serialization().classResolver(); if (classResolver == null) { // Override the class resolver with one that can detect injected // classloaders via AdvancedCache.with(ClassLoader) calls. ClassLoader cl = cfg == null ? globalCfg.classLoader() : cfg.classLoader(); classResolver = new EmbeddedContextClassResolver(cl, icc); } baseCfg.setClassResolver(classResolver); }