실행하는 동안 JAR 모듈을 등록하는 모듈 식 응용 프로그램이 필요합니다. 그 목적을 위해 Netbeans Lookup API를 사용하고 있습니다.실행 중 JAR 등록
문제는 실행중인 인스턴스가 인식하지 못하기 때문에 일부 JAR 파일을 직접 라이브러리 폴더에 복사 할 수 없다는 것입니다. 모듈에서 인터페이스의 패키지 이름과 모듈 패키지 이름을 사용하여 META-INF.services
을 구성했습니다.
while(true){
Lookup lkp;
Collection<TestInterface> tests = null;
Template tmpl;
final Lookup.Result rslt;
lkp= Lookup.getDefault();
//lkp=Lookups.forPath("modules-path");
tmpl= new Template(TestInterface.class);
rslt= lkp.lookup(testTemplate);
tests = rslt.allItems();
Lookup.getDefault().lookup(TestInterface.class);
rslt.addLookupListener(new LookupListener() {
@Override
public void resultChanged(LookupEvent le) {
reaction(rslt);
}
});
reaction(rslt);
}
}
private static void reaction(Lookup.Result r) {
for (Iterator i = r.allInstances().iterator(); i.hasNext();) {
TestInterface s = (TestInterface) i.next();
System.out.println(s.somemethod());
}
}
가 제안/힌트가 어떻게 그것을 해결하기 위해 모든 : 여기
내 코드의 예입니다?
OSGi에 대해 알고 있는데 lookup-api가 병목 현상이 될지 고려해 볼 것입니다. OSGi에서 라이브러리를 선언하지 않고 모듈을 "플러그인"할 수 있는지 알고 있습니까? 예를 들어, 주 모듈이 실행 중일 때 폴더에 항아리를 넣은 다음 주 모듈이이를 인식하고 즉시 연결되는 모듈의 메서드를 사용합니다. – xplorer00
저는 OSGi 전문가가 아니므로 당신을 오도하고 싶지는 않습니다. 그렇다고 생각하지 않습니다. 지금까지 내가 아는 한 jar 파일은 OSGi가 인식 할 수 있도록 MANIFEST.MF 파일에 OSGi 매개 변수를 포함해야합니다. 하지만 좀 더 숙련 된 조언은 유용 할 것입니다 ... –
팁, 편집 해 주셔서 감사합니다. :) – xplorer00