tuk*_*tuk 0 apache-camel apache-karaf aries blueprint-osgi apache-servicemix
我有一个简单的Camel应用程序捆绑包,该捆绑包将在Apache Service Mix 6.1下的Karaf 3.0.5中部署。配置文件放置在etc/目录中(假设它名为wf.cfg)。我想在我的应用程序包中具有动态配置更改功能。这样,无论何时更改了内容wf.cfg,都可以立即打包。为此,我在我的
blueprint.xml
<cm:property-placeholder persistent-id="wf"
update-strategy="reload">
<cm:default-properties>
<cm:property name="env" value="local" />
</cm:default-properties>
</cm:property-placeholder>
<!-- a bean that uses a blueprint property placeholder -->
<bean id="configBean" class="com.jabong.orchestratorservice.basecomponent.config.ConfigBean">
<property name="env" value="${env}" />
</bean>
Run Code Online (Sandbox Code Playgroud)
我现在面临的问题是如果将update-strategy设置为reload。然后,它似乎正在重新加载整个bean。
有人可以让我知道是否可以只重新加载configBean整个捆绑包吗?如果我能做到这一点,那么可能是我可以对configBean应用程序包可以使用的配置变量进行静态引用?
完整blueprint.xml的放在这里。
在property-placeholder可以有两个值update-strategy:
在Aries-Blueprint中还有另一种注入属性的方法,可以通过以下方法managed-properties:它们装饰Bean定义,并在配置更改时将新属性动态注入Bean。这里有两种模式:(bean-managed更改配置时调用方法)和container-managed(更改属性时调用设置器)。
这样,managed-properties您可以动态地拦截配置中的更改并对其进行响应,而无需重新启动蓝图上下文(因此也无需停止骆驼上下文)。
但是,骆驼中的组件并不是那么动态:它们在创建端点时读取配置,仅此而已。如果要动态更改路由的配置,这并非易事或不可能。您将不得不停止/开始路线。
| 归档时间: |
|
| 查看次数: |
1672 次 |
| 最近记录: |