2つのバンドルAとBがあり、バンドルAにはメールを受信するためのreceiveというメソッドを含むサービスアクティベーターがあり、バンドルBはバンドルAからのメールを消費するので、OSGiでサービスアクティベーターをサービスとして公開する方法を教えてください。
1 に答える
1
必要に応じてインターフェイスを作成します。私はあなたに例を提供します:
public interface Receiver {
void receive(String smth);
}
実装クラスを作成します。
public class ReceiverImpl implements Receiver {
@Override
public void receive(String smth) {
}
}
次に、次のように Spring を使用してレシーバーを OSGi サービスとして公開します。
<bean id="receiver" class="com.yourpackage.ReceiverImpl"/>
<osgi:service ref="receiver" interface="com.yourpackage.Receiver"/>
これを機能させるには、Receiver バンドルがマニフェスト エントリでパッケージをエクスポートし、Consumer バンドルがそのパッケージをインポートするようにします。
他のバンドルでレシーバーを呼び出すには:
<osgi:reference id="receiver" interface="com.yourpackage.Receiver"/>
次に、Receiver のプロパティを、それを使用するバンドルの任意の Spring Bean に設定できます。
于 2012-11-27T09:56:28.980 に答える