public synchronized void putResolvedClass(ObjectStreamClass classDesc, Class<?> cl) { ClassLoaderContext classLoaderContext = getClassLoaderContext(true); classLoaderContext.putResolvedClass(classDesc, cl); if (_logger.isLoggable(Level.FINEST)) logFinest("Adding new resolved class to incoming context [" + cl.getName() + "] for ObjectStreamClass " + classDesc.getName() + ", context class loader key " + classLoaderContext.getClassLoaderCacheKey()); }
public synchronized void putAnnotateInterfaceNamesMap(NamesWrapper names, Class<?> cl) { ClassLoaderContext classLoaderContext = getClassLoaderContext(true); classLoaderContext.putAnnotateInterfaceNamesMap(names, cl); if (_logger.isLoggable(Level.FINEST)) logFinest("Adding new NamesWrapper to incoming context [" + names + "] for class " + cl.getName() + ", context class loader key " + classLoaderContext.getClassLoaderCacheKey()); }
private ClassLoaderContext getClassLoaderContext(boolean createIfAbsent) { ClassLoader contextClassLoader = ClassLoaderHelper.getContextClassLoader(); Long clKey = contextClassLoader == null ? NULL_CL_MARKER : ClassLoaderCache.getCache().putClassLoader(contextClassLoader); ClassLoaderContext classLoaderContext = _classLoaderContextMap.get(clKey); if (classLoaderContext == REMOVED_CONTEXT_MARKER) throw new MarshalContextClearedException("Service has been unloaded"); if (createIfAbsent && classLoaderContext == null) { classLoaderContext = new ClassLoaderContext(clKey); _classLoaderContextMap.put(clKey, classLoaderContext); if (clKey != NULL_CL_MARKER) { boolean classLoaderPresent = ClassLoaderCache.getCache().registerClassLoaderStateListener(clKey, this); //Double check, class loader could have been removed from last check till now if (!classLoaderPresent) { _classLoaderContextMap.remove(clKey); throw new MarshalContextClearedException("Service has been unloaded"); } } } return classLoaderContext; }
public synchronized Class<?> getResolvedClass(ObjectStreamClass classDesc) { ClassLoaderContext classLoaderContext = getClassLoaderContext(false); if (classLoaderContext == null) return null; return classLoaderContext.getResolvedClass(classDesc); }
public synchronized Class<?> getClassFromAnnotateInterfaceNameMap(NamesWrapper names) { ClassLoaderContext classLoaderContext = getClassLoaderContext(false); if (classLoaderContext == null) return null; return classLoaderContext.getClassFromAnnotateInterfaceNameMap(names); }