如何在Spring/Tomcat-webapp中加载${catalina.home}/conf/application.



如何在Spring/Tomcat Web应用程序中加载${catalina.home}/conf/application.properties

环顾StackOverflow和谷歌,我看到了许多声称这是可能的讨论。然而,这对我来说并不奏效。根据我研究的建议,我的Spring applicationContext.xml文件包含以下行:

<context:property-placeholder location="${catalina.home}/conf/application.properties"/>

但我在日志中看到了这个:

Caused by: java.io.FileNotFoundException: Could not open ServletContext resource [/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties]

从日志条目中,我可以看到${catalina.home}正在正确扩展。当我在applicationContext.xml文件中手动展开它时,它会返回相同的错误。下面按预期返回application.properties文件的内容:

cat /Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties

因此,这条道路显然是正确的。这是网络应用程序安全问题还是Tomcat服务器配置问题?

context:property-placeholderlocation资源,这意味着如果您只提供一个文件路径(而不是带有协议的完整URL),那么该路径将根据Web应用程序的基本目录进行解析-它正在尝试加载不存在的/Users/username/Servers/apache-tomcat-6.0.36/webapps/<appname>/Users/username/Servers/apache-tomcat-6.0.36/conf/application.properties。如果你在它前面加上file:,它会按照你的要求工作:

<context:property-placeholder location="file:${catalina.home}/conf/application.properties"/>

对于基于注释的配置,您可以使用:

@PropertySource("file:${catalina.home}/conf/application.properties")

最新更新