/** * Is a domain name registered * * @param name the domain name * @return true when the domain is registered * @throws IllegalArgumentException for a null name */ public boolean isRegistered(String name) { return getDomain(name) != null; }
/** * Register a classloader policy, possibly constructing the domain with a BEFORE parent policy * * @param domainName the domain name * @param policy the classloader policy * @return the policy * @throws IllegalArgumentException for a null parameter */ public ClassLoader registerClassLoaderPolicy(String domainName, ClassLoaderPolicy policy) { return registerClassLoaderPolicy(domainName, ParentPolicy.BEFORE, (Loader) null, policy); }
/** * Register a policy with the default domain<p> * * Equivalent to {@link #registerClassLoaderPolicy(ClassLoaderDomain, ClassLoaderPolicy)} using * {@link #getDefaultDomain()} as the ClassLoaderDomain * * @param policy the policy * @return the classloader * @throws IllegalArgumentException if a parameter is null * @throws IllegalStateException if the policy is already registered with a domain */ public ClassLoader registerClassLoaderPolicy(ClassLoaderPolicy policy) { return registerClassLoaderPolicy(getDefaultDomain(), policy); }
/** * Get the default classloading domain * * @return the default domain */ public synchronized ClassLoaderDomain getDefaultDomain() { if (shutdown) throw new IllegalStateException("The classloader system is shutdown: " + toLongString()); // Already constructed if (defaultDomain != null) return defaultDomain; // See if explicitly registered defaultDomain = registeredDomains.get(DEFAULT_DOMAIN_NAME); if (defaultDomain != null) return defaultDomain; // Create it defaultDomain = createDefaultDomain(); // Register it internalRegisterDomain(DEFAULT_DOMAIN_NAME, defaultDomain); return defaultDomain; }
/** * Unregister a domain * * @param name the domain name */ public void unregisterDomain(String name) { ClassLoaderSystem system = getSystem(); ClassLoaderDomain domain = system.getDomain(name); if (domain == null) throw new IllegalStateException("Domain is not registered: " + name); system.unregisterDomain(domain); } }
domain = getDomain(domainName); if (domain == null) domain = createAndRegisterDomain(domainName, parentPolicy, parent); return registerClassLoaderPolicy(domain, policy);
public ClassLoader findParentUnitLoader(Module module) { ClassLoaderDomain domain = ClassLoaderSystem.getInstance().getDomain(module.getDeterminedDomainName()); if (domain.getParent() instanceof ClassLoaderToLoaderAdapter) { ClassLoaderToLoaderAdapter cp2la = (ClassLoaderToLoaderAdapter)domain.getParent(); return SecurityActions.getClassLoader(cp2la); } return null; }
/** * Initialize the boot libraries using the new classloader * * @return the classloader * @throws Exception for any error */ private ClassLoader initBootLibraries() throws Exception { ClassLoaderSystem system = ClassLoaderSystem.getInstance(); mbeanServer.registerMBean(system, new ObjectName("jboss.classloader:service=ClassLoaderSystem")); List<URL> list = getBootURLs(); VirtualFile[] files = new VirtualFile[list.size()]; for (int i = 0; i < list.size(); ++i) { URL url = list.get(i); files[i] = VFS.getChild(url); } VFSClassLoaderPolicy policy = new VFSClassLoaderPolicy(files); policy.setExportAll(ExportAll.NON_EMPTY); policy.setImportAll(true); ClassLoader classLoader = system.registerClassLoaderPolicy(policy); if (classLoader instanceof RealClassLoader) bootstrapUCLName = ((RealClassLoader) classLoader).getObjectName(); return classLoader; }
/** * Create and register a domain * * @param name the name of the domain * @return the domain * @throws IllegalArgumentException for a null name * @throws IllegalStateException if there already is a domain with that name */ public ClassLoaderDomain createAndRegisterDomain(String name) { return createAndRegisterDomain(name, ParentPolicy.BEFORE, null); }
/** * Get a domain * * @param name the domain name * @return the domain * @throws IllegalArgumentException for a null name */ public synchronized ClassLoaderDomain getDomain(String name) { if (name == null) throw new IllegalArgumentException("Null name"); if (shutdown) throw new IllegalStateException("The classloader system is shutdown: " + toLongString()); ClassLoaderDomain result = registeredDomains.get(name); // See whether this is the default domain if (result == null && DEFAULT_DOMAIN_NAME.equals(name)) result = getDefaultDomain(); return result; }
/** * Unregister a classloader * * @param classLoader the classloader * @throws Exception for any error */ public void unregisterClassLoader(ClassLoader classLoader) throws Exception { ClassLoaderSystem system = getSystem(); system.unregisterClassLoader(classLoader); }
public synchronized ClassLoaderDomain getDefaultDomain() { if (defaultDomain == null) { defaultDomain = getSystem().getDefaultDomain(); } return defaultDomain; }
/** * Register a domain * * @param domain the domain * @throws IllegalArgumentException for a null domain * @throws IllegalStateException if a domain is already registered with this name */ public synchronized void registerDomain(ClassLoaderDomain domain) { if (domain == null) throw new IllegalArgumentException("Null domain"); String name = domain.getName(); if (isRegistered(name)) throw new IllegalStateException("A domain is already registered with name " + name); internalRegisterDomain(name, domain); }
/** * Create and register a domain with the given parent classloading policy * * @param name the name of the domain * @param parentPolicy the parent classloading policy * @param parent the parent * @return the domain * @throws IllegalArgumentException for a null argument * @throws IllegalStateException if there already is a domain with that name */ public ClassLoaderDomain createAndRegisterDomain(String name, ParentPolicy parentPolicy, Loader parent) { ClassLoaderDomain result = createDomain(name); result.setParentPolicy(parentPolicy); result.setParent(parent); registerDomain(result); return result; }
/** * Unregister a domain from the MBeanServer * * @param domain the domain */ protected void unregisterDomainMBean(ClassLoaderDomain domain) { if (mbeanServer == null) return; try { ObjectName name = getObjectName(domain); mbeanServer.unregisterMBean(name); } catch (Exception e) { log.warn("Error unregistering domain: " + domain, e); } }
public synchronized ClassLoaderSystem getSystem() { if (system == null) { system = ClassLoaderSystem.getInstance(); } return system; }
/** * Create the default domain<p> * * By default this just invokes {@link #createDomain(String)} with {@link #DEFAULT_DOMAIN_NAME} * * @return the default domain */ protected ClassLoaderDomain createDefaultDomain() { return createDomain(DEFAULT_DOMAIN_NAME); }
domain = getDomain(domainName); if (domain == null) domain = createAndRegisterDomain(domainName, parentPolicy, parent); return registerClassLoaderPolicy(domain, policy);
/** * Unregister a domain * * @param name the domain name */ public void unregisterDomain(String name) { ClassLoaderSystem system = getSystem(); ClassLoaderDomain domain = system.getDomain(name); if (domain == null) throw new IllegalStateException("Domain is not registered: " + name); system.unregisterDomain(domain); } }
/** * Create and register a domain * * @param name the name of the domain * @return the domain * @throws IllegalArgumentException for a null name * @throws IllegalStateException if there already is a domain with that name */ public ClassLoaderDomain createAndRegisterDomain(String name) { return createAndRegisterDomain(name, ParentPolicy.BEFORE, null); }