in jbi/deployer/src/main/java/org/apache/servicemix/jbi/deployer/impl/ComponentInstaller.java [272:308]
protected ClassLoader createClassLoader(Bundle bundle, String name, String[] classPathNames, boolean parentFirst, SharedLibrary[] sharedLibs) {
// Create parents classloaders
ClassLoader[] parents;
if (sharedLibs != null) {
parents = new ClassLoader[sharedLibs.length + 2];
for (int i = 0; i < sharedLibs.length; i++) {
parents[i] = sharedLibs[i].getClassLoader();
}
} else {
parents = new ClassLoader[2];
}
parents[parents.length - 2] = new BundleDelegatingClassLoader(bundle, getClass().getClassLoader());
parents[parents.length - 1] = new BundleDelegatingClassLoader(getBundleContext().getBundle(0));
// Create urls
List<URL> urls = new ArrayList<URL>();
for (int i = 0; i < classPathNames.length; i++) {
File f = new File(installRoot, classPathNames[i]);
if (!f.exists()) {
logger.warn("Component classpath entry not found: '" + classPathNames[i] + "'");
}
try {
urls.add(f.getCanonicalFile().toURL());
} catch (IOException e) {
throw new IllegalArgumentException("Component classpath entry not found: '" + classPathNames[i] + "'");
}
}
// Create classloader
return new MultiParentClassLoader(
name,
urls.toArray(new URL[urls.size()]),
parents,
!parentFirst,
new String[0],
new String[]{"java.", "javax."});
}