0

但是tomcat抛出错误:

 IOException parsing XML document from ServletContext resource [/WEB-INF/applicationContext.xml];

这表明 tomcat 期望 applicationContext.xml 是它被复制到的目录之上的一个目录。它被复制到/WEB-INF/ classes目录,而不仅仅是普通的旧/WEB-INF

我正在使用 Maven。

4

5 回答 5

6

如果你把它放在 src/main/resources 下,你应该把资源称为classpath:/applicationContext.xml

于 2012-07-25T15:19:45.097 回答
3

在你的web.xml你可以说明你所在的applicationContext.xml位置。如果它在,/WEB-INF/classes那么您必须声明/WEB-INF/classes/applicationContext.xml(而不仅仅是/WEB-INF/applicationContext.xml)。

尝试这个:

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        /WEB-INF/classes/applicationContext.xml
    </param-value>
</context-param>
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener> 

要包含多个上下文文件,您可以使用该import函数。为此,请在applicationContext.xml每个文件中写入一行,如下所示:

<import resource="myOtherSpringContext.xml"/>
于 2012-07-25T15:16:29.653 回答
3

在 web.xml ( http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/context/ContextLoader.html )中使用以下语法:

<!-- list of the configuration files to load -->
<context-param>
    <!-- Spring -->
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:applicationContext.xml</param-value>
</context-param>

它将从 classes/* 目录加载它。顺便说一句,如果你想将 applicationContext.xml 直接复制到你的 WEB-INF 目录中,请将其移动到 /src/main/webapp

顺便说一句,这里是弹簧文档推荐的方式:http: //static.springsource.org/spring/docs/3.0.x/reference/beans.html#context-create

HIH

于 2012-07-25T15:21:13.843 回答
1

这是标准的 Maven 行为,并且是很多人毫无异议地使用的。为什么你更喜欢 WEB-INF 中的它?

无论如何,如果你想要它,你可以把它放进去src/main/webapp/WEB-INF

于 2012-07-25T15:22:21.903 回答
0

标准方法是创建新的源目录src/main/webapp。该目录中的所有文件都将与 WEB-INF 放在同一文件夹中,从而导致战争。因此,在这个新的源目录中,您可以创建WEB-INF并将您放置applicationcontext.xml在其中。

所以你的结构看起来很像

+src
+---main
+---+---java
+---+---webapp
+---+------WEB-INF

检查maven-war-plugin文档

于 2012-07-25T15:20:58.477 回答