2012-10-25 76 views
4

我是在OSGi世界中潛水的新手。 我試圖開發具有以下模塊(包)的應用程序:OSGI配置包

  • 模型
  • 服務的API
  • 默認服務
  • 網絡

假設默認 - 服務包包含內部數據訪問服務。因此,它需要 一些數據庫訪問配置。 我覺得把數據庫配置放在默認服務包內並不合適。 另外,Web捆綁應該不知道默認服務是如何在內部連線的。

我的問題是:OSGi是否有配置包的概念?我的想法是部署一個負責默認服務配置的軟件包。有沒有類似的解決方案?

+1

我希望你已閱讀http://www.adam-bien.com/roller/abien/entry/how_to_kill_an_osgi – artbristol

+1

你能否指定你使用哪種OSGI容器? – Arham

+0

我正在使用Karaf。但我想我的代碼是OSGi不可知論的。 –

回答

4

你看過ConfigurationAdmin服務嗎?您的軟件包應使用ConfigurationAdmin來接收其配置。如果您在捆綁軟件中使用聲明式服務,則DS會自動爲您使用ConfigurationAdmin。

+0

是的,這似乎是OSGi的標準方式,但如果我理解正確,ConfigAdmin會根據您使用的OSGI容器將配置文件存儲在不同的位置。例如,Karaf使用/ etc來檢測這些文件。 –

+0

不幸的是我在一個解決方案中考慮使用配置安裝捆綁軟件。 –

+0

配置管理員非常適合執行運行時配置,但對於靜態配置可能過大。 – Robin

3

根據您希望進行配置的方式,碎片可能適合您的需求。它們允許您向現有的捆綁類路徑添加額外的信息。我們使用它爲不同的運行時環境(dev,test,...)提供不同的配置。您只需部署適當的片段包即可獲得正確的配置。

+0

謝謝羅賓,我會調查這個 –

+0

這是一個好主意,但我想不依賴於OSGi API –

1

其實我開發了一個小包袱,可以與擴展模式等束檢測配置數據。在我的情況下,這是一個Jason文件。有一些特殊的技巧來處理密碼和二進制文件,如SSL證書。