【发布时间】:2012-02-05 16:16:09
【问题描述】:
我正在尝试将工作的 spring WAR 移动到 OSGI 环境(在 glassfish 3.1 和蓝图,spring 3.0.5 中)。 应用程序从磁盘加载属性文件,如下所示:
<bean id="myProperties" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="${my_conf}/my.properties"/>
<property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE"/>
</bean>
我在调试器中看到 ${my_conf}/my.properties 被转换为现有路径 (c:\conf\my.properties)
我在下一个bean声明中使用my.properties中定义的属性jms.url
<amq:broker useJmx="false" persistent="false" brokerName="embeddedbroker">
<amq:transportConnectors>
<amq:transportConnector uri="tcp://${jms.url}"/>
<amq:transportConnector uri="vm://embeddedbroker" />
</amq:transportConnectors>
</amq:broker>
在部署中我得到一个异常"Could not resolve placeholder ${jms.url}"
为什么会失败?还有其他方法可以从磁盘上的文件中加载属性吗?
谢谢
【问题讨论】:
-
可能重复 question。您在调试器中看到的可能由另一个 applicationContext.xml 中的另一个 bean 加载
-
谢谢。我尝试将位置路径设置为不存在的文件,但没有出现异常。我试图设置属性文件的硬编码路径,但没有任何改变。请记住,它在非 osgi 战争中有效