我对OSGi和相关技术还很陌生。
问题是这样的:我有一个服务器类,它维护着一个监听器列表。监听器可以通过一个方法 (register(this)
) 来注册自己,这个方法会将监听器添加到上述列表中(当然,所有的监听器都必须实现服务器类的监听器接口):
public void register(ServerListener listener) {
if(theListeners == null)
theListeners = new ArrayList<ServerListener>();
theListeners.add(listener);
}
那是一个名为
ServerListener
的接口:public interface ServerListener {
public void update(JsonObject data);
}
现在,服务器类通过一个update(JsonObject object)
方法不时地向监听器提供新数据。
public void updateListeners() {
new Thread() {
public void run() {
for(ServerListener l : theListeners) {
l.update(jsonObject);
}
}
}.start();
}
现在,我想将服务器类修改为OSGi框架(Knopflerfish)中的服务包。我对此完全不熟悉。我只是想试试玩玩,但我现在的做法行不通,因为监听器实际上并不知道它们应该实现
ServerListener
接口。所以服务器无法通过接口注册它们。问题是,我希望服务器推送数据,而不是客户端拉取数据(在我的理解中这样会更容易)。有没有人(能够理解我说得不好的解释)指点我正确的方向?