프록시 패턴을 구현하기 위해 asm을 사용합니다. 예외 것보다 나는이 작업을 요청하면
원래 클래스 test.service.Service
동적으로 바이트를 생성합니다.
public class ProxyFactory{
public static Object generateProxy(Class<?> argument){
//do generate use asm.
//generate a proxyClass that extends argument
//and override the sayHello() method
//and than invoke System.out.println("anything") before we call super.sayHello()
Class<?> class = proxyClass;
return class.newInstance();
}
}
public class Service implements IService{
@Override
public List<String> sayHello(){
List<String> list = new ArrayList<String>();
list.add("stackoverflow user");
return list;
}
}
public class Action extends ActionSupport{
private IService service = ProxyFactory.generateProxy(Service.class);
}
입니다 : 예를 들어
java.lang.reflect.InvocationTargetException 일에서
java.lang.Thread.run에서 .reflect.NativeMethodAccessorImpl.invoke0 (기본 방법)
... (Thread.java:619는)
는에 의해 발생 : java.lang.NoClassDefFo undError : java.lang.ClassNotFoundException가 : java.lang.ClassLoader.defineClass1 (기본 방법)
...
... 40 개
에 의한에서 test.service.Service
test.service.Service
이는 java.net.URLClassLoader $의 1.run (URLClassLoader.java:200)에서 java.security.AccessController.doPrivileged (기본 방법)
... java.lang.ClassLoader.loadClass에서
(ClassLoader.java에서
: 252)
at java.lang.ClassLoader.loadClassInternal (ClassLoader.java:320)
... 43 more
위의 코드가 모두 응용 프로그램을 실행하면 작동 할 수 있기 때문에 Tomcat 클래스 로더 문제 인 것 같습니다. 문제를 해결하는 데 도움이 될 수 있습니다.
감사합니다.
에 대한 세부 코드 예제를 업데이트하십시오 정의 우리의 클래스에 바람둥이 클래스 로더를 사용할 수 있음을 의미 전체 스택 추적을 게시하십시오 (예를 들어 게시 된 것이 사용자의 예제와 관련되지 않습니다. 예를 들어 거기에 generateProxy() 메소드 호출이 없습니다). –