아직도 OSGI를 배우려고합니다. 그러나 누군가가 이것이 가능한지 또는이 샘플 코드에서 잘못 될 수 있는지 알려줄 수 있습니다.원격 OSGI 서비스 호출
그래서 서비스 믹스에서 실행되는 두 개의 별도 번들이 있습니다.
public class Activator implements BundleActivator {
public void start(BundleContext context) throws Exception {
context.registerService(Checker.class.getName(), new CheckerImpl(), null);
}
}
public interface Checker{
public void checkMe()
}
public class CheckerImpl implements Checker{
public void checkme(){
System.out.println("Hello World");
}
}
번들 상술 한 기능 runCheck() 및
이게 (이 경우 runCheck() 단지 헬로 출력 세계.)에서이 인터페이스를 구현하는 클래스를 갖는다 검사기라는 인터페이스를 포함 "원격"번들 나는 그것이
Checker check = (Checker) svc;
svc.runCheck();
에 도착하고 작동을 중지 실행하지만 때마다 우리는 (1 번들 인터페이스와 같은 코드를 포함) 검사기라는 또 다른 인터페이스를 가지고이 번들로
public class RemoteActivator implements BundleActivator {
public void start(BundleContext context) throws Exception{
serviceRef = context.getServiceReference(SVC_REF_CERTCHECK);
if (serviceRef == null) {
logMsg("Servicereference is null");
throw new NullPointerException();
}
else{
logMsg("Check: " + context.getService(serviceRef).getClass().toString());
Object svc = context.getService(serviceRef);
logMsg(svc.toString());
Checker check = (Checker) svc;
svc.runCheck();
}
public void logMsg(Object o){
System.out.println(o);
}
}
public interface Checker{
public void checkMe()
}
(아무튼 심지어 나에게 오류 메시지를주지 않는다). 내가
svc.toString()
을 실행할 수 있으며이 CheckerImpl 내 과부하 방법의 코드를 실행할로받은 개체가 다른 서비스입니다 것을 알고있다.
원격 호출 서비스에서 .jar 번들의 종속성이 필요합니까?
감사합니다!