in yoko-rmi-spec/src/main/java/org/apache/yoko/rmispec/util/UtilLoader.java [67:187]
private static Class<?> loadClass0(String name, String codebase, ClassLoader loader)
throws ClassNotFoundException {
Class result = null;
ClassLoader stackLoader = null;
ClassLoader thisLoader = UtilLoader.class.getClassLoader();
Class[] stack = _secman.getClassContext();
for (int i = 1; i < stack.length; i++) {
ClassLoader testLoader = stack[i].getClassLoader();
if (testLoader != null && testLoader != thisLoader)
{
stackLoader = thisLoader;
break;
}
}
if (stackLoader != null) {
try {
logger.finer("trying stack loader");
result = stackLoader.loadClass(name);
} catch (ClassNotFoundException ex) {
// skip //
}
if (result != null) {
return result;
}
}
// try loading using our loader, just in case we really were loaded
// using the same classloader the delegate is in.
if (thisLoader != null) {
try {
logger.finer("trying UtilLoader loader");
result = thisLoader.loadClass(name);
} catch (ClassNotFoundException ex) {
// skip //
}
if (result != null) {
return result;
}
}
if (codebase != null && !"".equals(codebase)
&& !Boolean.getBoolean("java.rmi.server.useCodeBaseOnly")) {
try {
logger.finer("trying RMIClassLoader");
URLClassLoader url_loader = new URLClassLoader(
new URL[]{new URL(codebase)}, loader);
result = url_loader.loadClass(name);
// log.info("SUCESSFUL class download "+name+" from "+codebase,
// new Throwable("TRACE"));
} catch (ClassNotFoundException ex) {
logger.log(Level.FINER, "RMIClassLoader says " + ex.getMessage(), ex);
// log.info("FAILED class download "+name+" from "+codebase,
// ex);
// skip //
} catch (MalformedURLException ex) {
logger.log(Level.FINER, "RMIClassLoader says " + ex.getMessage(), ex);
logger.finer("FAILED class download " + name + " from "
+ codebase + " " + ex.getMessage());
// skip //
} catch (RuntimeException ex) {
logger.log(Level.FINER, "FAILED class download " + name + " from "
+ codebase + " " + ex.getMessage(), ex);
}
if (result != null) {
return result;
}
} else {
codebase = (String) AccessController.doPrivileged(new GetSystemPropertyAction("java.rmi.server.codebase"));
if (codebase != null) {
try {
result = java.rmi.server.RMIClassLoader.loadClass(codebase,
name);
} catch (ClassNotFoundException ex) {
// skip //
} catch (MalformedURLException ex) {
// skip //
}
if (result != null) {
return result;
}
}
}
if (loader == null) {
loader = getContextClassLoader();
}
if (loader != null) {
try {
logger.finer("trying local loader");
result = loader.loadClass(name);
} catch (ClassNotFoundException ex) {
logger.log(Level.FINER, "LocalLoader says " + ex.getMessage(), ex);
}
}
if (result != null) {
return result;
}
throw new ClassNotFoundException(name);
}