使用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。 它还支持托管服务工厂,可以写回配置更改,可以替换属性值,以及监视多个文件夹。 文档页面包含所有详细信息。

参考:Code Affine博客上,从我们的JCG合作伙伴 Rudiger Herrmann 使用Apache Felix File Install配置OSGi服务

翻译自: https://www.javacodegeeks.com/2013/10/configure-your-osgi-services-with-apache-felix-file-install.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值