2017-03-09 4 views
0

私はConfigurationFactoryとして私を務めるOSGIサービスを実装しようとしていますが、サービスの実装には以下のような2つのプロパティがあります。@Reference( "(service.label = TESTCALL)")Felix SCR注釈エラー

@Property(value="this is service variable property value") 
static final String MY_SERVICE_VARIABLE = "service.variable"; 

@Property(description="Label for this MyService") 
private static final String MY_SERVICE_LABEL = "service.label"; 

と私は罰金コンパイルし、複数のサービス構成からランダムデータを取得し、以下のコードで、このサービスを呼び出すようにしようとしていますOSGIサーブレットからこのサービスの構成データを取得しています。

@Reference 
MyService myservice; 

が、私はservice.labelを使用してコンパイルするには、以下のエラーが直面していながら、私のOSGIサーブレットのコードスニペットの下に使用してサービスを呼び出していて、各コンフィギュレーション・データを取得したいです。

@Reference("(service.label=TESTCALL)") 
MyService myservice; 

シンボル[ERROR]シンボルを見つけることができません:メソッド値()[ERROR]所在地: @interfaceのorg.apache.felix.scr.annotations.Referenceを。

答えて

0

AEM 6.xバージョンの場合は@Reference(target = "(service.label=TESTCALL)")を使用すると、コンパイルする必要があります。私は以前私のgourivar githubで使用していたサンプルPOCをアップロードしました。aemvardhan.wordpress.com

+0

ありがとう、それは働いた。サンプルコードは – krish

0

あなたのサービスにはService Factory注釈が欠けている可能性が最も高いです。ような何か:

@Service 
    @Component(
     metatype=true,label="my service", 
     description="sample my service implementation", 
     configurationFactory=true) 
     public class MyServiceImpl implements MyService { 

    } 

configurationFactory=true属性。これにより、サービスは複数の構成を持つことができます。

+0

私のサービスにはすでに注釈が含まれていて、** @ Reference MyService myservice ; **、私は** @ Reference( "(service.label = TESTCALL)")MyService myservice; **を使用してコンパイルに失敗したため、分離された設定データを取得したいので(つまり、複数のサービス) – krish

+0

私は別の方法で同じ質問をしてみましょう**どのように工場出荷時のサービス複数の設定データを取得する**。コードスニペットが役立ちます。 – krish

+0

あなたのアプローチはうまくいて、コードスニペットを見ずに(多分あなたが気に入っていれば?)私はコンパイルエラーの理由を見ることができません。 https://cqdump.wordpress.com/2014/08/05/managing-multiple-instances-of-services-osgi-service-factories/からコードスニッパを試してみて、それが動作しているかどうかを私がローカルで試してみることができますOKをコンパイルします(バインディングをテストしていませんが、ここでは問題ではないと思います)。 –