gpt4 book ai didi

apache-camel - Karaf 中的 Aries 蓝图 - 蓝图能否引用外部属性文件

转载 作者:行者123 更新时间:2023-12-04 17:51:35 25 4
gpt4 key购买 nike

我正在使用 ActiveMQ 蓝图来设置 JMS 连接池。
我还使用 Camel 来提供一些功能。

我使用 org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer允许在设置 camel-context 时使用外部属性文件文件。

是否有使用蓝图的类似类型功能?

所以基本上,我想用我从下面配置中的属性文件中获得的属性替换 ${server.address}:

<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0"
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0"
xmlns:amq="http://activemq.apache.org/schema/core">

<bean id="activemqConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="nio://${server.address}" />
</bean>

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory">
<property name="maxConnections" value="8" />
<property name="connectionFactory" ref="activemqConnectionFactory" />
</bean>

<bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="pooledConnectionFactory" />
<property name="concurrentConsumers" value="5" />
</bean>

<bean id="resourceManager" class="org.apache.activemq.pool.ActiveMQResourceManager"
init-method="recoverResource">
<property name="transactionManager" ref="transactionManager" />
<property name="connectionFactory" ref="activemqConnectionFactory" />
<property name="resourceName" value="activemq.localhost" />
</bean>

<bean id="xaConnectionFactory" class="org.apache.activemq.ActiveMQXAConnectionFactory">
<argument value="nio://${server.address}" />
</bean>

<bean id="connectionFactory" class="org.fusesource.jms.pool.JcaPooledConnectionFactory"
init-method="start" destroy-method="stop">
<property name="connectionFactory" ref="pooledConnectionFactory" />
<property name="name" value="activemq" />
</bean>

<reference id="transactionManager" interface="javax.transaction.TransactionManager" />

<service ref="pooledConnectionFactory" interface="javax.jms.ConnectionFactory">
<service-properties>
<entry key="name" value="localhost" />
</service-properties>
</service>
</blueprint>

最佳答案

您可以通过配置管理员使用系统属性和/或配置:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0">

<!-- Allow the use of system properties -->
<ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]" />

<!--
config admin properties from etc/com.example.config.cfg
-->
<cm:property-placeholder persistent-id="com.example.config" update-strategy="reload">
<cm:default-properties>
<cm:property name="configDir" value="$[karaf.base]/my-config" />
</cm:default-properties>
</cm:property-placeholder>

<bean id="config" class="com.example.Config">
<property name="rootDir" value="${configDir}" />
<property name="someSysProp" value="$[someSysProp]" />
</bean>

</blueprint>

“ext:property-placeholder”元素允许您通过定义的占位符前缀和后缀使用系统属性(如示例中的 karaf.base),但这是可选的。如果您只需要自己的配置,您可以通过 etc/中的文件提供它
etc/com.example.config.cfg 并通过 persistence-id 引用它。

关于apache-camel - Karaf 中的 Aries 蓝图 - 蓝图能否引用外部属性文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15330471/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com