[英]Spring + Tomcat: Setup relative file path
我正在Tomcat7上部署Spring 3应用程序。 我正在使用OXM解组器,因此我需要像这样创建StreamSource:
unmarshaller.unmarshal(new StreamSource(new FileInputStream(dbSetupPath)))
我像这样设置dbSetupPath的值,它可以在单元测试中使用 :
@Value("src/main/resources/db-setup.xml")
String dbSetupPath;
但是,当我在Tomcat上部署时,出现FileNotFoundException。 什么是使我的测试通过和Tomcat正常运行的正确路径? 我正在部署exploded:war atm。
在tomcat上部署时,所有资源文件夹文件都将进入WEB-INF / classes文件夹中的.war文件。
你需要尝试
@Value("classpath:/db-setup.xml")
因此,tomcat将在类路径中检查db-setup.xml。
有关更多和适当的详细信息,请参阅
http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/new-in-3.html
第2.5.3.1节: 基于Java的Bean元数据
放置db-setup.xml就像图片一样
并改变这个
@Value("db-setup.xml")
String dbSetupPath;
我认为您可以指定这样的路径:
$ {webAppRoot} WEB-INF / db-setup.xml
并将db-setup.xml放入WEB-INF文件夹(或创建一些子文件夹)。
同样,为了正确使用此方法,您需要在web.xml中指定以下参数:
<context-param>
<param-name>webAppRootKey</param-name>
<param-value>webAppRoot</param-value>
</context-param>
Spring会自动将此参数注入到Web应用程序根文件夹的实际路径。
对于我来说,这对于日志记录是有效的,这就是为什么我认为它也适用于您的情况。
所以我的解决方案是将值注入org.springframework.core.io.Resource而不是像这样的普通String:
@Value("classpath:/db/db-setup.xml")
Resource dbConfig;
然后,我访问了基础文件并将其提供给编组器:
unmarshaller.unmarshal(new StreamSource(dbConfig.getFile());
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.