【问题标题】:Sharing a configuration file between OSGi bundles in Apache Servicemix 4?在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?
【发布时间】:2011-05-21 15:08:30
【问题描述】:

是否有人能够在 SMX4 中的两个或多个捆绑包之间成功共享配置?我要找的是这个:

  1. $SMX_HOME/etc/myconfiguration.cfg 中有一个文件
  2. 让此配置“可用”以通过 OSGi 配置管理使用 Spring dm 注入到我的包中,即
org.postgresql.Driverjdbc:postgresql://localhost/db某个用户一些密码vm://default

然后,我可以将这样的东西注入到我的 bean 中:

. . . 豆> . . .

对于一个捆绑包来说,所有这些都只是桃子。我正在寻找一种方法来定义它一次,然后能够重用相同的配置文件作为一组包的属性。现在,我有多个包,每个包都有自己的配置实例(持久 id),因此,每个需要数据库连接、Java JMS 等的包都必须在每个文件中重复配置。

目前,我正在使用 Apache Servicemix 4,它使用 Apache Felix 作为 OSGi 容器。

【问题讨论】:

    标签: java osgi apache-felix apache-servicemix


    【解决方案1】:

    我分享我的配置位于

    $SMX_HOME/etc/my.config.cfg

    使用这个声明

    <!-- get properties as bean from OSGi Configuration Admin Service -->
    <osgix:cm-properties id="myConfig" persistent-id="my.config" />
    
    <!-- activate ${...} placeholder -->
    <ctx:property-placeholder properties-ref="myConfig" />
    

    在我的每个捆绑包中。看起来与您的解决方案非常相似,并且效果很好! 您可以共享您的配置(不需要为每个 bundle 提供配置文件),但您必须在每个 spring-application-context 文件中声明对此配置的引用。

    我正在使用基于 apache-servicemix-4.3.0-fuse-01-00 的 FUSE 4.3

    【讨论】:

    • 我必须试一试...我不确定是否可以跨包共享持久 ID。
    • 感谢这篇文章;您是否碰巧知道是否有办法使这项工作适用于蓝图?或者如果这个当前的 spring 解决方案支持在运行时更改配置(更新两个包)?
    • @AlanFoster (Un) 幸运的是,我不需要专注于 OSGi 开发 - 所以目前我无法回答您的问题,也没有时间弄清楚。对不起!
    猜你喜欢
    • 2012-08-18
    • 2014-12-01
    • 2016-01-25
    • 2016-07-31
    • 2010-11-17
    • 2018-04-17
    • 2017-06-01
    • 2018-12-28
    • 1970-01-01
    相关资源
    最近更新 更多