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 次 |
最近记录: |