사용자 정의 ClassLoader를 정의하려고합니다. ContextClassLoader가 연결되지 않음
public class ExampleLoader extends ClassLoader
{
public Class<?> findClass(String name) throws ClassNotFoundException
{
System.out.println("This never gets printed");
return super.findClass(name);
}
public Class<?> loadClass(String name, boolean b)
throws ClassNotFoundException
{
System.out.println("This never gets printed");
return super.loadClass(name, b);
}
}
그리고 물론 내 코드
그것을 테스트 :public class Tester
{
public static void main(String[] args)
{
Thread t = new FooThread();
t.setContextClassLoader(new ExampleLoader());
t.start();
}
}
class FooThread extends Thread
{
public void run()
{
new RandomClass();
}
}
문제는 내 선이 인쇄되지는 결코 것입니다. 분명히 나는 뭔가를 놓치고있다.
, 어떻게 톰캣 같은 응용 프로그램은이 일을해야합니까? 내 이해는 모든 바람둥이 webapps 공유 jvm 내에서 실행되지만 클래스를 사용할 때, 클래스 정의는 각각의 전쟁에서 비롯됩니다. 그들이 어떻게이 아이디어를 얻었는지? – Jim
그들은'ClassLoader # loadClass()'를 사용합니다. 'ClassLoader' 인스턴스는이 방법으로 쓰레드에 저장되고 전달됩니다. 소스 코드를 살펴 보는 좋은 출발점은'org.apache.catalina.core.DefaultInstanceManager'입니다. – BalusC