是否可以在< 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>
配置&lt; beans&gt;在activemq.xml文件中,在“值”中使用我自己的属性可以正常工作,例如:这很好用:
<bean id="myBean" class="MyClass">
<property name="someProperty" value="${my.property}"/>
</bean>
和$ {my.property}已经完美解析了...但我无法弄清楚如何在&lt; broker&gt;内部解析我的属性元素或其中一个子元素(如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}属性已解析......但我似乎无法弄清楚如何在&lt; broker&gt;中解析我自己的任何属性activemq.xml配置文件的元素...我只是不断收到'$ {my.weight}'不是有效数字的错误(如果你考虑的话,这是一种侮辱; - )
答案 0 :(得分:0)
是的,您可以使用属性占位符来加载属性文件或使用环境变量。看起来您正在使用Spring,因此您需要使用特定于Spring的属性占位符机制。
属性文件:
<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties">
...
环境变量:
<context:property-placeholder />
答案 1 :(得分:0)
我遇到了同样的问题
让它工作但不确定这是否正确。
您必须将其添加到启动脚本中。
如果您使用的是active.bat
using System.Collections.Generic;
public static class LINQExtensions
{
public delegate bool TryFunc<TSource, TResult>(TSource source, out TResult result);
public static IEnumerable<TResult> SelectTry<TSource, TResult>(
this IEnumerable<TSource> source, TryFunc<TSource, TResult> selector)
{
foreach (TSource item in source)
{
TResult result;
if (selector(item, out result))
{
yield return result;
}
}
}
}
如果您使用包装器,请将其添加到 wrapper.conf
"%_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" %*
确保增加粗体数字。