无法加载/WEB-INF/applicationContext.xml

时间:2014-03-04 04:00:36

标签: spring

在其他查询中看到相同的问题,但没有找到答案,因此重新发布。

在Rest中创建了一个示例Helloworld服务,并将其部署在Tomcat-Jersey中。不使用Maven。 在applicationContext.xml中注入一个spring bean定义,它存在于WEB-INF目录中。

在Eclipse中的Tomcat中部署服务。 但是当我执行其余服务时,找不到文件applicationContext.xml。 将文件复制到 WEB-INF / classes 后,就可以了。

通过仅将其保留在 WEB-INF 中,使其工作的方法是什么?

web.xml:

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

Rest服务代码段:

    ctx = new ClassPathXmlApplicationContext("classpath:applicationContext.xml");

2 个答案:

答案 0 :(得分:1)

/WEB-INF/classes下删除上下文描述符时,工作似乎是合理的,因为此位置是classpath的根。

如果要删除 WEB-INF 文件夹下的 applicationContext.xml ,请尝试使用以下uri(不带前缀)加载:

    ctx = new ClassPathXmlApplicationContext("/WEB-INF/applicationContext.xml");

否则,您能否解释为什么要在Web应用程序中加载 applicationContext.xml

或者,您可以按照以下方式以编程方式加载应用程序上下文:

ApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(this.getServletContext());

BR。

答案 1 :(得分:0)

如果您使用Intellj IDEA并遇到ApplicationContext.xml路径问题; 转到File,然后点击Project Structure。在Project Settings下,点击Facets,在Web部分,您会看到Web Resource Directories。您应该将Web Resource Directory定义到/WEB-INF文件夹。如果您的/WEB-INF文件夹位于子路径中,如下所示;

  

/网络/ WEB-INF /...

然后选择/web目录以覆盖您的所有文件。