0

2つのバンドルAとBがあり、バンドルAにはメールを受信するためのreceiveというメソッドを含むサービスアクティベーターがあり、バンドルBはバンドルAか​​らのメールを消費するので、OSGiでサービスアクティベーターをサービスとして公開する方法を教えてください。

4

1 に答える 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 に答える