2013-10-14 3 views
1

정말 까다로운 문제가 있습니다. 클래스로 ComponentContext 매개 변수로있는 메서드를 사용하여 사용자 지정 JAR을 실행할 수있는 컨테이너가 좀 있습니다. 로드 후에는 리플렉션을 사용하여이 메서드를 호출하고 싶지만 문제가 있습니다. ComponentContext을 만들려면 동일한 클래스 로더 (이 경우 JCL)를 사용해야합니다.JCL 로딩 된 클래스에 객체 전달

JclObjectFactory factory = JclObjectFactory.getInstance(); 
Object context = factory.create(jcl, "org.hive.lib.component.ComponentContextImpl"); 

Method setConfigDirMethod = context.getClass().getMethod("initialize", File.class, File.class); 
setConfigDirMethod.invoke(context, configDir, workspace); 

Method method = instance.getClass().getMethod("initialize", context.getClass()); 
method.invoke(instance, context); 

을 그리고이

ComponentContextImpl c = new ComponentContext(); 

같은 컨테이너에 만들어 컨텍스트를 전달하기 위해 노력하고있어 때 때문에 다른 클래스 로더의 java.lang.IllegalArgumentException 실패 : 코드를 참조하십시오.

내 컨테이너가 JAR의 클래스에 의존한다는 것은 그것이 나를 미치게한다는 것을 의미합니다. 거기에 내 ComponentContext (JAR에서 인스턴스화하지 않음)을 initialize 메서드에 전달하는 방법이 있습니까?

PS는 - JAR는 assembly:single

답변

0

provided

으로 공유 라이브러리 마킹으로 해결 조립했다