在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?
Posted
技术标签:
【中文标题】在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?【英文标题】:Sharing a configuration file between OSGi bundles in Apache Servicemix 4? 【发布时间】:2011-05-21 15:08:30 【问题描述】:是否有人能够在 SMX4 中的两个或多个捆绑包之间成功共享配置?我要找的是这个:
-
在
$SMX_HOME/etc/myconfiguration.cfg
中有一个文件
让此配置“可用”以通过 OSGi 配置管理使用 Spring dm 注入到我的包中,即
然后,我可以将这样的东西注入到我的 bean 中:
. . .对于一个捆绑包来说,所有这些都只是桃子。我正在寻找一种方法来定义它一次,然后能够重用相同的配置文件作为一组包的属性。现在,我有多个包,每个包都有自己的配置实例(持久 id),因此,每个需要数据库连接、Java JMS 等的包都必须在每个文件中重复配置。
目前,我正在使用 Apache Servicemix 4,它使用 Apache Felix 作为 OSGi 容器。
【问题讨论】:
【参考方案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 开发 - 所以目前我无法回答您的问题,也没有时间弄清楚。对不起!以上是关于在 Apache Servicemix 4 中的 OSGi 包之间共享配置文件?的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Apache ServiceMix 中启动 OSGI 包
ServiceMix 中 Apache-Camel 路由的管理和监控
NoClassDefFoundError: OsgiDefaultCamelContext 使用 Apache ServiceMix