2016-03-29 12 views
1

<ブローカ> activemq.xmlファイルの構成部分内に自分自身のプロパティを参照することはできますか?<broker>の参照プロパティactivemq.xml設定の一部

"env"スクリプトのACTIVEMQ_OPTSを変更してプロパティ値を設定しています。以下のような何か追加:

ACTIVEMQ_OPTS="${ACTIVEMQ_OPTS} -Dmy.property=MyValue" 

をそして、私は私のactivemq.xmlファイルの先頭に次き:

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://activemq.apache.org/schema/core http://activemq.apache.org/schema/core/activemq-core.xsd"> 
    <!-- Allows us to use system properties as variables in this configuration file --> 
    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> 
    <property name="locations"> 
     <value>file:${activemq.conf}/credentials.properties</value> 
    </property> 
    </bean> 

<豆の設定> activemq.xmlファイルにすることはで私自身の性質で正常に動作します「価値」、例えばこれは正常に動作します:

<bean id="myBean" class="MyClass"> 
    <property name="someProperty" value="${my.property}"/> 
</bean> 

と$ {my.property}が完全に解決された...しかし、私はちょうどその時<ブローカー>要素またはそれの一つだ内部解決するために、私のプロパティを取得する方法を見つけ出すことはできません子(persistenceAdapterのような)例えば

は、次のような場合には...

<persistenceAdapter> 
    <replicatedLevelDB directory="${activemq.data}/leveldb" zkAddress="${my.zk.address}" zkPath="/activemq" bind="tcp://0.0.0.0:0" weight="${my.weight}"/> 
</persistenceAdapter> 

... $ {} activemq.dataプロパティが解決された...しかし、私はいずれかを取得する方法を見つけ出すように見えることはできません私の自身のプロパティの<ブローカの中で解決するために> activemq.xml設定ファイルの要素...私はちょうど '$ {my.weight}'が有効な番号ではありません(これは侮辱のようなものです、あなたがそれについて考えるなら;-)

答えて

0

はい、プロパティー・プレースホルダーを使用してプロパティー・ファイルをロードしたり、環境変数を使用することができます。 Springを使用しているようですので、Spring固有のプロパティプレースホルダ機構を使用する必要があります。

プロパティファイル:

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

環境変数:

<context:property-placeholder /> 

も参照してください。 Spring property placeholders

+0

私はPropertyPlaceholderConfigurerというBeanを表示しています。これは、別のBeanの「値」属性で使用するときに解決する$ {my.property}を取得する方法です。 問題は、activemq.xml設定ファイルの<ブローカ>要素の内部でプロパティが解決しないということです。さて、まったく真実ではない... $ {activemq。*}プロパティは解決しますが、私は解決しません。私は "activemq"で私の財産名を始めるトリックを試みました。 (例:-Dactivemq.my.property = foo)、<ブローカーの中の$ {activemq.my.property}を参照してください。しかし、それは動作しませんでした。 – Adam

+0

私の質問のタイトルを編集して追加しました私がいくつかの説明のために使用しているPropertyPlaceholderConifgurer Bean – Adam

0

私は

は、それが動作するようになったではなく、同じ問題で立ち往生していますそれが正しい方法であるかどうか確かめてください。

起動スクリプトに追加する必要があります。

ラッパーを使用している場合は、

"%_JAVACMD%" %ACTIVEMQ_SUNJMX_START% %ACTIVEMQ_DEBUG_OPTS% %ACTIVEMQ_OPTS% %ACTIVEMQ_SSL_OPTS% 
-Dactivemq.classpath="%ACTIVEMQ_CLASSPATH%" 
-Dactivemq.home="%ACTIVEMQ_HOME%" 
-Dactivemq.base="%ACTIVEMQ_BASE%" 
-Dactivemq.conf="%ACTIVEMQ_CONF%" 
-Dactivemq.data="%ACTIVEMQ_DATA%" 
-Djava.io.tmpdir="%ACTIVEMQ_TMP%" 
-D**remote.host.ip=1.2.3.4** 
-jar "%ACTIVEMQ_HOME%/bin/activemq.jar" %* 

active.bat使用している場合は、太字の数をインクリメントすることを確認します

wrapper.java.additional.**13**=-Dremote.host.ip="1.2.3.4" 

のwrapper.conf に追加します。

関連する問題