OSGiとそれに近いものは全く新しくなっています。問題への既存のアプリケーションをOSGiサービスに変更するJava/OSGi
ジャンプ:私はリスナーのリストを保持し、サーバ・クラスを持って、リスナーが言及したリストの上にあることにリスナーを置く方法(register(this)
)を介してtheirselvesを登録することができます(すべてのリスナーは、サーバ・クラスを実装します当然のリスナーインタフェース):
ServerListener
インタフェースです
public void register(ServerListener listener) {
if(theListeners == null)
theListeners = new ArrayList<ServerListener>();
theListeners.add(listener);
}
:
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
では、リスナーがインターフェイスを実装しています。クライアントの実装を持つ別の開発者がサーバーからデータを取得したい場合は、serverlistenerインターフェイスを何らかの形で実装する必要があります(正しいのですが)。サーバーバンドル内には適切な場所がありません。この種の一般的なインターフェースとクラスが指定されているコアバンドルのようなものが必要ですか?しかし、とにかく、新しいクライアントは別のバンドルで指定されたインタフェースにもアクセスできませんでした。 – nyyrikki