2013-10-09 14 views
0

我有其通過DS使用兩個服務OSGi包,A和B.當關機的HttpClient的的ConnectionManager在OSGi的

乙服務是內部使用Apache的HttpClient的。

我的問題是,什麼時候應該關閉HttpClient的ConnectionManager,我試圖在服務B的「unbind」方法內部執行它,但它不起作用,因爲調用unbind方法並不意味着實例被銷燬所以同一個實例可以重新綁定,因此我的後續請求會失敗,因爲ConnectionManager已關閉。

希望有人能夠在OSGi環境中提供一些關於HttpClient使用的信息。

回答

0

B本身是DS組件嗎?如果是這樣,您可以在B的停用方法調用期間進行清理。如果B不是DS組件,而是使用原始服務API註冊的服務,則可以在註冊服務時使用ServiceFactory。然後,當消費者釋放服務時,您的ServiceFactory.ungetService實現將被調用,您可以在那裏清理。

1

剛纔的評論。您可能需要使用HttpClient OSGi軟件包提供的HttpClientBuilderFactory。由工廠分配的連接池將被OSGi容器自動關閉/解除分配。

+0

這是OSGi的好處,服務提供商可以很容易地確保當客戶消失時清理。工作很好。 –

相關問題