2013-03-11 4 views
4

Я использую схему ActiveMQ для настройки пула JMS Connection Pool. Я также использую Camel для обслуживания некоторых функций.Овен Blueprint в Karaf - Может ли ссылка ссылаться на внешний файл свойств

Я использую 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.

+0

Я добавил '<внутр: свойство-заполнитель заполнитель-префикс = "$ [" \t \t заполнитель-суффикс = "]"/>' вне camelcontext и пытался использовать karaf.home в внутри camelcontext. Но его сбоя загружает данные из этого местоположения. Я попытался как этот '' Разве мы не можем получить доступ к нему в camelcontext? – tvshajeer

 Смежные вопросы

  • Нет связанных вопросов^_^