package com.jiuqi.mobile.core.service.base;
import java.net.URL;
import java.net.URLClassLoader;
import com.jiuqi.mobile.core.service.base.test.SmallWorldImpl;
public class DynamicClassLoader extends URLClassLoader
{ // Static
static ThreadLocal currentClass = new ThreadLocal();
public static Class getCurrentClass()
{
return (Class) currentClass.get();
}
// Constructors --------------------------------------------------
public DynamicClassLoader(URL... urls)
{
super(urls);
}
public DynamicClassLoader(URL[] urls, ClassLoader cl)
{
super(urls, cl);
}
// Public implementation -----------------------------------------
protected Class findClass(String name) throws ClassNotFoundException
{
if (name.endsWith("_Stub")) {
// name = name.substring(0, name.length() - 5);
// Get impl
// Class cl = loadClass(name);
Class cl = SmallWorldImpl.class;
// Assume that it only implements one remote interface
currentClass.set(cl.getInterfaces()[0]);
return DynamicRemoteStub.class;
} else {
return SmallWorldImpl.class;//super.findClass(name);
}
}
}