我對OSGi以及與此相關的一切都很陌生。Java/OSGi將現有應用程序修改爲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);
}
現在,服務器級通過提供從時新數據的聽衆時間方法。
public void updateListeners() {
new Thread() {
public void run() {
for(ServerListener l : theListeners) {
l.update(jsonObject);
}
}
}.start();
}
現在,我想將服務器類修改爲OSGi框架(Knopflerfish)中的服務包。我對此一點都不熟悉。我想嘗試只是爲了好玩,但現在我做這件事的方式是行不通的,聽衆實際上並不知道他們應該實現ServerListener
界面。所以服務器不能通過接口註冊它們。
事情是,我想服務器推送數據,而不是客戶端拉(根據我的理解,這會更容易)。有人(誰理解我可憐的解釋)能指出我朝着正確的方向嗎?
「實際聽衆不知道他們應該實現ServerListener接口「。那你怎麼稱呼他們? – Thilo 2011-12-23 09:33:43
在當前實現的監聽器中實現接口,工作。如果現在另一位開發人員想要從服務器獲取數據,他應該以某種方式實現serverlistener接口(對嗎?),但是應該在哪裏指定/放置該接口?在服務器捆綁中並不適合這種情況。我是否需要類似於核心包的東西,其中指定了這種通用接口和類?但無論如何,新客戶端也無法訪問另一個包中指定的接口,對嗎? – nyyrikki 2011-12-23 09:40:19