私はosgiを初めて使用し、経験がほとんどありません。config xml ファイルを使用して、Bean を osgi サービスとしてエクスポートする osgi バンドルがあります。そのサービスを別の osgi バンドルで使用したいと考えています。誰でもその方法を教えてもらえますか? 私はmavenとfelix osgiを使用しています。
2 に答える
OSGi サービスがどのようにエクスポートされるかは問題ではありません。青写真やその他の方法を使用します。これは OSGi サービスであるため、バンドルは OSGi サービス レジストリから取得できます。このためには、次のことを行う必要があります。
依存関係を宣言するために、そのパッケージをバンドル マニフェストにインポートします。Import-Package: com.acme.theservicepackage を META-INF/Manifest.mf に追加する必要があります。
Activator クラスでは、バンドル コンテキストを使用してサービス レジストリからサービスを取得する必要があります。
timeRef = bc.getServiceReference(TimeService.class.getName()); if (timeRef != null) { timeService = (TimeService) bc.getService(timeRef); }
次に、メソッドが何であれ、そのメソッドを呼び出して timeService (またはサービスが使用している任意のインターフェイス) を使用するだけです。
ここには多くの詳細があります。代わりにヘルパーの ServiceTracker クラス、ブループリント、または宣言型サービスを使用できます。やれ。
基本的な OSGi サービスのデモがここにあります。
ブループリントでサービスを利用しますか? あなたの説明「config xml」は、青写真のように聞こえます。この場合、使用できます
私のウェブサイトに完全な例があります: http://www.liquid-reality.de/x/DIBZ
この例は、ブループリントを使用してサービスをエクスポートおよびインポートする方法を示しています。