По-прежнему пытается узнать 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");
}
}
Расслоение Над содержит интерфейс под названием Checker, который имеет одну функцию runCheck() и класс, который реализует этот интерфейс (где в этом случае runCheck() просто выводит привет мир.)
Это «пульт».
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()
}
С помощью этого комплекта мы имеем другой интерфейс под названием Checker (который содержит один и тот же код, что и интерфейс в 1 пачке), однако всякий раз, когда я бегу он добраться до
Checker check = (Checker) svc;
svc.runCheck();
и перестать работать (Безразлично даже не сообщите мне сообщение об ошибке). Я знаю, что объект он получил в другом сервисе, как я могу запустить
svc.toString()
и он будет работать код из метода перегрузки в пределах CheckerImpl.
Нужно ли иметь зависимость от .jar-пакета в службе удаленного вызова?
Спасибо всем!