2013-06-21 63 views
1

我做了一個bundle,部署在OSGI容器中,現在處於活動狀態,並提供一些服務。會話在使用SlingRepository服務時顯示爲空,爲什麼?

而且我有另一個使用這些服務和一個服務的軟件包,即SlingRepository,以獲得管理員預先製作Apache Jachrabbit中的節點。

第二個包只是使用寫在第一個包中的實現。

爲此,我編譯運行第二個bundle的Activate註解中的第一個bundle。 但是,當我部署第二個包時,它顯示會話的Null

@Reference 
session = repository.loginadministrataive(null); 

然後,我嘗試另一種方法,其中,使我在第一束一個類,而不是使另一個爲,即活化劑類,它實現BundleActivator的接口。但是這表明了同樣的問題。

你能告訴我如何解決這個問題?

你能告訴我如何使用第二包運行第一包?

在此先感謝。尋找你的答覆。

回答

4

@參考這樣的代碼行是錯誤的,請參閱Sling示例以獲取更多信息。

Slingbucks sample,例如使用@Reference來獲得一個SlingRepository,你可以用它作爲一個起點。

此外,您可能不需要激活器,聲明式服務註釋應該足夠了,您會在示例中看到這一點。

+0

非常感謝。我解決了這個問題。我還用一些代碼發佈了完整的答案。再次感謝:)現在我陷入了另一個問題,我在其中放置了一些代碼激活第二個包的註釋,並且任務是抓取整個網站。現在我想在中間停下來,但它並沒有停止。你能告訴我怎樣才能阻止它? – devsda

+0

您不應該在激活方法中添加長時間運行的代碼,而是需要設置組件需要的內容並啓動一個可以完成工作的線程。 Sling代碼庫中有許多示例,如果您查找包含Activate和Thread的代碼,您應該可以找到它們。 –

+0

你可以給我鏈接。所以我可以在我的代碼中實現。 – devsda

相關問題