使用Apache Felix文件安装配置OSGi服务
最近有關托管服務的帖子讓我想起了我值得一提的Apache Felix File Install中的一項功能。 在與Holger合作進行項目時,我從他那里了解到File Install不能僅用于管理包。 它還監視配置文件,并在托管服務各自的配置更改時更新托管服務。
文件安裝還可以配置托管服務工廠等。 但是,我發現對于配置數據通常是特定于環境的托管服務(例如打印機URL,數據庫URL,TCP端口)特別有用。 最好的事情是:它使您擺脫了以編程方式擺弄Configuration Admin的麻煩。
怎么運行的
可以告訴“文件安裝”監視某個文件夾(通常通過系統屬性)。 然后,您可以將配置文件(普通Java屬性文件)放入該文件夾。 配置文件通過命名約定與托管服務關聯。 文件名的格式必須為<pid> .cfg。 如果存在具有匹配PID的托管服務,則在文件更改時將對其進行更新。
例
我在GitHub上放了一個最小的獨立示例。 它有一個捆綁包,提供了如下實現的EchoService:
public class EchoService implements ManagedService {public void updated( Dictionary<String, ?> properties ) {if( properties != null ) {System.out.println( "port = " + properties.get( "port" ) );}}}易于發現:其全部目的是在配置更改時將其打印出來。
EchoService已使用echoservice的PID注冊。 除捆綁軟件外,還有一個包含配置文件的項目。 它名為echoservice.cfg并具有一個屬性: port = 7 。
啟動配置將必要的軟件包組合在一起:OSGi框架(此處為Equinox),示例軟件包,Felix Gogo Shell(用于診斷問題)和文件安裝以及Configuration Admin。 這些虛擬機參數
-Dfelix.fileinstall.dir="${project_loc:com.codeaffine.fileinstall.example.config}" -Dfelix.fileinstall.noInitialDelay=true -Dfelix.fileinstall.poll=1000告訴“文件安裝”監視項目文件夾并每秒檢查一次更改。 多虧了project_loc變量,啟動配置可在整個開發環境中移植。
現在我們啟動OSGi框架,控制臺輸出將如下所示:
port = 7如果我們對echoservice.cfg文件進行更改并稍等片刻,我們將看到EchoService已更新。 新配置將顯示在控制臺日志中。
更多的
如果這引起您的興趣,您可能需要更深入地了解File Install。 它還支持托管服務工廠,可以寫回配置更改,可以替換屬性值,以及監視多個文件夾。 文檔頁面包含所有詳細信息。
翻譯自: https://www.javacodegeeks.com/2013/10/configure-your-osgi-services-with-apache-felix-file-install.html
總結
以上是生活随笔為你收集整理的使用Apache Felix文件安装配置OSGi服务的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 深圳社保备案怎么办理流程(深圳社保备案)
- 下一篇: MongoDB:GridFS删除方法删除