2013-03-11 28 views
4

我正在使用ActiveMQ藍圖來設置JMS連接池。 我也使用駱駝服務一些功能。卡拉夫的白羊座藍圖 - 藍圖是否引用外部屬性文件

我使用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> 

回答

7

您可以通過配置使用系統性能和/或配置管理員:

<?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> 

「分機:屬性佔位符」元素,可以通過定義的佔位符前和後綴使用的系統資源(如在該示例中karaf.base),但是這是可選的。如果您只需要自己的配置,則可以通過etc/ etc/com.example.config.cfg中的文件提供它,並通過persistence-id引用它。

+0

我已經加入''外camelcontext並試圖用所述karaf.home在內部camelcontext。但是它的失敗從該位置加載數據。我已經試過這樣 '' 我們不能內部訪問camelcontext? – tvshajeer 2017-04-10 15:31:13