복붙노트

[SPRING] ServletContext 리소스 [/WEB-INF/applicationContext.xml]을 열 수 없습니다.

SPRING

ServletContext 리소스 [/WEB-INF/applicationContext.xml]을 열 수 없습니다.

좋아, 나는이 질문을하는 500 번째 사용자이다. 나는 많은 해답을 읽었지만 여전히 운이 없다.

상위 모듈 pom에 포함 된 항목 :

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>${spring.framework.version}</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${spring.framework.version}</version>
</dependency>

자식 모듈은 maven-jetty-plugin을 가지고 있으며 jetty : webapp로 webapp 모듈을 실행합니다.

web.xml은 표준 디스패처 모듈을 정의합니다.

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

시작은 실패하지만 WEB-INF 아래에 dispatcher-servlet.xml 파일이 있습니다.

FileNotFoundException: Could not open ServletContext resource [/WEB-INF/applicationContext.xml]

뭐가 잘못 되었 니? 문서와 모든 사람들은 Spring MVC가 XX-servlet.xml을 검색 할 것이라고 말합니다. 여기서 XX는 서블릿의 이름입니다. applicationContext.xml을 검색하는 이유는 무엇입니까?

해결법

  1. ==============================

    1.ContextLoaderListener는 모든 서블릿과 필터에서 공유하는 자체 컨텍스트를 가지고 있습니다. 기본적으로 /WEB-INF/applicationContext.xml을 검색합니다.

    ContextLoaderListener는 모든 서블릿과 필터에서 공유하는 자체 컨텍스트를 가지고 있습니다. 기본적으로 /WEB-INF/applicationContext.xml을 검색합니다.

    다음을 사용하여이를 사용자 정의 할 수 있습니다.

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/somewhere-else/root-context.xml</param-value>
    </context-param>
    

    web.xml에서 필요없는 경우이 리스너를 제거하십시오.

  2. ==============================

    2.업데이트 : applicationContext.xml과 동일한 두 번째 컨텍스트를 만듭니다.

    업데이트 : applicationContext.xml과 동일한 두 번째 컨텍스트를 만듭니다.

    또는이 코드 스 니펫을 web.xml에 추가 할 수 있습니다.

    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:applicationContext.xml</param-value>
            </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    

    대신에

    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    
  3. from https://stackoverflow.com/questions/22350721/could-not-open-servletcontext-resource-web-inf-applicationcontext-xml by cc-by-sa and MIT license