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); } } }