【发布时间】:2017-03-07 10:05:15
【问题描述】:
仍在努力学习 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() 只输出 hello world。)
这是“远程”捆绑包。
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 的接口(它包含与第一个包中的接口相同的代码)但是每当我运行它时,就会进入
Checker check = (Checker) svc;
svc.runCheck();
并停止工作(甚至不给我错误消息)。 我知道它收到的对象是我可以运行的其他服务
svc.toString()
它会从 CheckerImpl 中的重载方法运行代码。
我是否需要在远程调用服务中拥有 .jar 包的依赖项?
谢谢大家!
【问题讨论】:
标签: java osgi osgi-bundle apache-servicemix