【发布时间】:2017-12-01 15:31:02
【问题描述】:
我正在编写一个系统,让用户可以插入自己的代码来监控传感器。
我想编写一个基本的监听器来监听其他包的变化。我遇到了对我的事业来说似乎很方便的 ServiceListener。我的问题是:何时调用 ServiceListener 的 serviceChanged() ?我一直在互联网上寻找它,但找不到任何东西。
非常感谢!
package be.pxl.smartcampus.MonitorListener;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
import org.osgi.framework.ServiceListener;
import org.osgi.framework.ServiceEvent;
import be.pxl.smartcampus.util.Monitor;
import be.pxl.smartcampus.util.Data;
public class Activator implements BundleActivator, ServiceListener {
public void start(BundleContext context) {
context.addServiceListener(this);
}
public void stop(BundleContext context) {
context.removeServiceListener(this);
}
public void serviceChanged(ServiceEvent event) {
if (event.getType() == ServiceEvent.MODIFIED) {
Monitor monitor = (Monitor) (event.getServiceReference());
Data data = monitor.getData();
System.out.println("SERVICE CHANGED CALLED");
// TO DO: MAKE API CALL
}
}
}
import be.pxl.smartcampus.util.Data;
import be.pxl.smartcampus.util.Monitor;
import org.osgi.framework.BundleContext;
import java.util.Hashtable;
public class Activator extends Monitor {
private Data data = new Data();
private Hashtable<String, Data> hash = new Hashtable<String, Data>();
public void start(BundleContext bundleContext) {
hash.put("first", data);
bundleContext.registerService(Activator.class.getName(), this, hash);
changeData();
}
private void changeData() {
hash.put("second", data);
}
public void stop(BundleContext bundleContext) {
}
}
【问题讨论】:
标签: java service osgi apache-felix