Доступ к фабрике соединений activemq Poolable Connection в качестве службы OSGI

Я использую предохранитель 6.0 и activemq 5.8. Вместо того, чтобы определять фабрику соединений с возможностью объединения в пул ActiveMQ в каждом пакете, имеет смысл определить общий пакет и предоставить его как службу osgi. Я создал файл чертежа в FUSE_HOME/etc и открыл сервис osgi, подобный этому.

  <osgix:cm-properties id="prop" persistent-id="xxx.xxx.xxx.properties" /> 

    <bean id="jmsConnectionFactory" class="org.apache.activemq.ActiveMQConnectionFactory">
            <property name="brokerURL" value="${xxx.url}" />
            <property name="userName" value="${xxx.username}" />
            <property name="password" value="${xxx.password}" />
        </bean>

<bean id="pooledConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" init-method="start" destroy-method="stop">
    <property name="maxConnections" value="${maxconnections}" />
    <property name="connectionFactory" ref="jmsConnectionFactory" />
</bean>

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

и когда я пытаюсь получить доступ к этой службе как в файлах чертежей, так и в текстовых файлах spring, подобных этому

<reference id="pooledConnectionFactory" interface="javax.jms.ConnectionFactory"/>
bean id="jmsConfig" class="org.apache.camel.component.jms.JmsConfiguration">
        <property name="connectionFactory" ref="pooledConnectionFactory"/>
        <property name="concurrentConsumers" value="${xxx.concurrentConsumers}"/>
    </bean>
    <bean id="activemq" class="org.apache.activemq.camel.component.ActiveMQComponent">
        <property name="configuration" ref="jmsConfig"/>
    </bean>

но я получаю следующее ожидание во время запуска пакетов.

Не удалось добавить идентификатор подключения: PLNL6237-55293-1401929434025-11:1201, причина: java.lang.SecurityException: имя пользователя [null] или пароль недействительны.

Я даже определил определение компендиума в своих пакетах.

Как я могу решить эту проблему? любая помощь приветствуется. Я нашел это в Интернете https://issues.apache.org/jira/i#browse/SM-2183 Нужно ли обновлять?


person user2997551    schedule 05.06.2014    source источник


Ответы (1)


Мне кажется, что вы неправильно используете заполнители свойств. Прежде всего, вы должны знать, что osgix:cm-properties предоставляет свойства только для указанного вами постоянного идентификатора. Вы можете обращаться с ним как с объектом java.util.Properties и даже внедрять его в bean-компонент как единое целое. Однако это означает, что он не пытается разрешить свойства.

Чтобы разрешить свойства, используйте конфигуратор заполнителей свойств Spring.

 <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
     <property name="properties" ref="prop"/>
 </bean>

P.S. Постоянный идентификатор cm-properties — это имя файла, не включая тип файла. Вам не нужны .properties в конце.

person ConMan    schedule 08.06.2014