프로그래머의 삶 Programmer's Life/SpringFramework

Spring 사용시 web.xml 문제 발생시

Oliver's World 2010. 5. 6. 14:17
728x90

심각: Error listenerStart
2006. 6. 16 오후 2:23:36 org.apache.catalina.core.StandardContext start
심각: Context [/dyna] startup failed due to previous errors
     661 DEBUG 14:23:36  StandardContext.filterStop:3622 - Stopping filters
     671 INFO 14:23:36  ApplicationContext.log:638 - Shutting down Log4J
 
이런 류의 로그와 함께...
어플리케이션의 문제가 아니라.. 설정에서 나오는 것이라 디버깅이 까다롭다.
일단, web.xml에서 아래 부분을 제거하면 문제는 사라진다.
 
 <!-- Spring Context 파일 경로 설정 -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/spring/dao-context.xml
   /WEB-INF/spring/application-context.xml
  </param-value>
 </context-param>
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
 
결국 문제는..
 
 <!-- Log4J 로딩 설정 -->
 <context-param>
  <param-name>log4jConfigLocation</param-name>
  <param-value>/WEB-INF/log4j/log4j.properties</param-value>
 </context-param>
 <listener>
  <listener-class>
   org.springframework.web.util.Log4jConfigListener
  </listener-class>
 </listener>

 <!-- Spring Context 파일 경로 설정 -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/spring/dao-context.xml
   /WEB-INF/spring/application-context.xml
  </param-value>
 </context-param>
 <listener>
  <listener-class>
   org.springframework.web.context.ContextLoaderListener
  </listener-class>
 </listener>
 
위와 같이 Log4J 리스너 이후에 컨텍스트 파일을 로딩하도록 설정해야 한다는 점이다.
Spring API에서 이를 명시했다.
분명히 알고 있던 내용이지만... 이유가 불분명하기 때문에.. 자주 까먹는다. ^^;
 
This listener should be registered after Log4jConfigListener in web.xml, if the latter is used.
 
로그4J 먼저, 컨텍스트 파일 나중..
728x90