2013-11-26 20 views
0

我已經寫了一個簡單的sling組件,它有一個接口,另一個接口是實現類。 我正在使用maven構建這個bundle jar,我從CQ felix console.Bundle成功上傳並且處於活動狀態。無法實例化組件jsp中的osgi包類

當我試圖從組件jsp實例化這個包類時,Null指針異常即將到來,這是因爲無法獲得該已實現類的引用而發生的.Below是用於調用此類的jsp代碼段。 下面是實例捆綁類的代碼:

InvokeAEMWorkflowImpl wfService = sling.getService(InvokeAEMWorkflowImpl.class); 

,也是我所觀察到一兩件事,我不能夠看到與此相關的菲利克斯控制檯的組件和服務區(標籤)任何東西。

有人可以幫助我,爲什麼我不能在我的組件jsp中引用這個類。

感謝, 紀

+0

請從pom.xml發佈InvokeAEMWorkflowImpl(至少是帶有SCR註釋的類聲明)和maven-bundle-plugin配置的源代碼。 –

+0

這是實現類,也包括捆綁插件以及... @ Component(immediate = true) @Service public class InvokeAEMWorkflowImpl implements InvokeNewWorkflow {//這不是完整的結構} – kishore

回答

1

從您的評論我假設你已經註冊的服務如下:

@Component(immediate=true) 
@Service 
public class InvokeAEMWorkflowImpl implements InvokeNewWorkflow { 
... 

按照SCR Annotation documentation,該@Service標註註冊使用所有實現的接口服務(以你的情況是InvokeNewWorkflow)。因此,你應該使用這個接口來從OSGi獲得服務:

InvokeNewWorkflow wfService = sling.getService(InvokeNewWorkflow.class); 

這是一個良好的編程習慣separate interface and implementation,因此在使用接口的類不需要了解任何接口。

+0

我嘗試了你的建議,但是沒有運氣,我仍然只有空引用。 – kishore

相關問題