org.mule.module.launcher
Class MuleApplicationClassLoader
java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.mule.module.launcher.GoodCitizenClassLoader
org.mule.module.launcher.FineGrainedControlClassLoader
org.mule.module.launcher.MuleApplicationClassLoader
- All Implemented Interfaces:
- Closeable, ApplicationClassLoader, ArtifactClassLoader
public class MuleApplicationClassLoader
- extends FineGrainedControlClassLoader
- implements ApplicationClassLoader
Methods inherited from class java.lang.ClassLoader |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResourceAsStream, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners |
PATH_LIBRARY
public static final String PATH_LIBRARY
- Library directory in Mule application.
- See Also:
- Constant Field Values
PATH_CLASSES
public static final String PATH_CLASSES
- Classes and resources directory in Mule application.
- See Also:
- Constant Field Values
PATH_MULE
public static final String PATH_MULE
- Directory for standard mule modules and transports
- See Also:
- Constant Field Values
PATH_PER_APP
public static final String PATH_PER_APP
- Sub-directory for per-application mule modules and transports
- See Also:
- Constant Field Values
CLASSPATH_EMPTY
protected static final URL[] CLASSPATH_EMPTY
logger
protected final transient Log logger
shutdownListeners
protected List<MuleApplicationClassLoader.ShutdownListener> shutdownListeners
MuleApplicationClassLoader
public MuleApplicationClassLoader(String appName,
ClassLoader parentCl)
MuleApplicationClassLoader
public MuleApplicationClassLoader(String appName,
ClassLoader parentCl,
Set<String> loaderOverrides)
findClass
protected Class<?> findClass(String name)
throws ClassNotFoundException
- Overrides:
findClass
in class FineGrainedControlClassLoader
- Throws:
ClassNotFoundException
getResource
public URL getResource(String name)
- Overrides:
getResource
in class ClassLoader
getResources
public Enumeration<URL> getResources(String name)
throws IOException
- Overrides:
getResources
in class ClassLoader
- Throws:
IOException
close
public void close()
- Description copied from class:
GoodCitizenClassLoader
- A workaround for http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5041014
- Specified by:
close
in interface Closeable
- Overrides:
close
in class GoodCitizenClassLoader
addShutdownListener
public void addShutdownListener(MuleApplicationClassLoader.ShutdownListener listener)
getAppName
public String getAppName()
- Specified by:
getAppName
in interface ApplicationClassLoader
toString
public String toString()
- Overrides:
toString
in class Object
getArtifactName
public String getArtifactName()
- Specified by:
getArtifactName
in interface ArtifactClassLoader
- Returns:
- the artifact unique identifier
getClassLoader
public ClassLoader getClassLoader()
- Description copied from interface:
ArtifactClassLoader
- ClassLoader is an abstract class. Not an interface.
There are parts of the code that requires a ClassLoader and others that requires an ArtifactClassLoader.
Ideally I would make ArtifactClassLoader implement ClassLoader interface but there's no such interface.
So if I have a method that requires a ClassLoader instance and an ArtifactClassLoader I would have to down cast and assume that it can be down casted or send two parameters, one for the ClassLoader and one for the ArtifactClassLoader:
public void doSomething(ArtifactClassLoader acl)
{
doSomething2(acl); //this requires an ArtifactClassLoader
doSomething3((ClassLoader)acl); //this requires a ClassLoader
}
public void doSomething(ArtifactClassLoader acl, ClassLoader cl)
{
doSomething2(acl); //this requires an ArtifactClassLoader
doSomething3(cl); //this requires a ClassLoader
}
To overcome that problem seems much better to have a method in ArtifactClassLoader that can actually return a ClassLoader instance:
public void doSomething(ArtifactClassLoader acl)
{
doSomething2(acl); //this requires an ArtifactClassLoader
doSomething3(acl.getDomainClassLoader()); //this requires a ClassLoader
}
- Specified by:
getClassLoader
in interface ArtifactClassLoader
- Returns:
- class loader to use for this artifact.
dispose
public void dispose()
- Description copied from interface:
ArtifactClassLoader
- Gets rid of the class loader resources.
- Specified by:
dispose
in interface ArtifactClassLoader
findLibrary
protected String findLibrary(String name)
- Overrides:
findLibrary
in class ClassLoader
Copyright © 2003-2014 MuleSoft, Inc.. All Rights Reserved.