2017-03-09 61 views
0

我試圖實現一個OSGI服務,它可以用作ConfigurationFactory,服務實現只有兩個屬性,如下所示。@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的servlet其中我試圖調用由以下代碼編譯罰款和從所述多個服務配置隨機檢索數據此服務檢索該服務配置數據。

@Reference 
MyService myservice; 

但是,當我想通過service.label和我在我的OSGI的servlet使用下面的代碼片段調用服務,而編譯現在面臨以下錯誤讓每個配置數據。

@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示例中的示例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

上找到同樣的POC示例。我的服務已經包含了註釋,並且在我將其用作**時使用它** @ 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/中的代碼snipper並查看它是否正常工作,因爲我只是在本地嘗試它編譯好(沒有測試綁定,但我想這不是問題)。 –