使用Apache Camel Blueprint - 需要在容器和独立内部持久保存属性

时间:2014-04-30 17:33:39

标签: java maven osgi apache-camel blueprint-osgi

我有一个使用blueprint和Camel PropertiesComponent进行配置的Camel路由,我可以通过'mvn camel:run'独立运行它,或者我可以将它安装到Karaf容器中。两者都很有效,发现了它们并将它们注入到路线中。

我无法弄清楚如何在运行时更改持久属性(例如,我想在路径停止/关闭时设置标记,然后在路线开始)。

我已阅读有关OSGi ConfigAdmin的内容 - 但这似乎不支持持久性属性。 我还读过有关OSGi首选项服务(它支持持久性) - 我如何实现它以便我可以独立运行它或在容器中运行它?将要求Camel路由引用服务,因此取决于OSGi?

有没有办法以独立的方式抽象偏好服务,而不依赖于容器服务?

提前感谢。

1 个答案:

答案 0 :(得分:1)

OSGi中的ConfigurationAdmin概要服务确实支持持久化属性。实际上它默认情况下会这样做(数据最终会出现在捆绑缓存中,因此您需要确保在每次重启时都不会擦除它,这无论如何都是不好的做法。)

如果您使用Apache Felix中的那个,您甚至可以选择:

  1. 重新配置数据保留的位置。
  2. 如果要使用数据库或其他内容,请提供自己的存储后端。
  3. 请参阅:http://felix.apache.org/documentation/subprojects/apache-felix-config-admin.html