提问者:小点点

当webapp部署在Maven嵌入式Tomcat上时,Spring无法加载属性


我的webapp在手动部署到Tomcat时工作正常。我想在构建期间执行集成测试,我想使用tomcat7-maven-plugin启动将部署webapp的嵌入式tomcat。

pom. xml中的配置:

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.1</version>
    <configuration>
        <path>/${name}</path>
    </configuration>
    <executions>
        <execution>
            <id>start-tomcat</id>
            <phase>pre-integration-test</phase>
            <goals>
                <goal>run</goal>
            </goals>
        </execution>
        <execution>
            <id>stop-tomcat</id>
            <phase>post-integration-test</phase>
            <goals>
                <goal>shutdown</goal>
            </goals>
        </execution>
    </executions>
</plugin>

Tomcat正在启动,但随后出现错误:

org.springframework.beans.factory.BeanInitializationException: 
   Could not load properties; nested exception is java.io.FileNotFoundException: 
   Could not open ServletContext resource [/WEB-INF/conf/configuration.properties]

/WEB-INF/conf/configuration.properties存在于war文件中。当war部署到独立的Tomcat实例时,应用程序正常工作。

有什么想法可以导致Spring找不到配置文件,这是在战争中存在的?


共1个答案

匿名用户

/WEB-INF/conf不在CLASSPATH中; /WEB-INF/classes是。尝试将. properties文件放在那里,看看是否做得更好。

如果这不起作用,我想知道这是否是类加载器层次结构问题。JavaEE容器具有类加载器层次结构:首先是引导程序,其次是应用程序服务器,最后是应用程序。当应用程序服务端需要时,应用程序加载器中可能有. properties文件。