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