본문 바로가기

spring

webAppRootKey

개발중 spring framework를 사용하는 두개의 context를 하나의 서버에서 돌리니.. 다음과 같은 에러가 나타났습니다.

 

2008. 3. 6 오후 8:13:05 org.apache.catalina.core.StandardContext listenerStart

심각: Exception sending context initialized event to listener instance of class org.springframework.web.util.Log4jConfigListener

java.lang.IllegalStateException: Web app root system property already set to different value: 'webapp.root' = [C:\server\Tomcat 6.0\webapps\pa\] instead of [C:\server\Tomcat 6.0\webapps\sample1\] - Choose unique values for the 'webAppRootKey' context-param in your web.xml files!

 

webAppRootKey의 정의는 다음과 같습니다.

Key of the system property that should specify the root directory of this web app. Applied by WebAppRootListener or Log4jConfigListener.

 

 

그러므로,

Web.xml에 정의한 다음부분

<context-param>

           <param-name>log4jConfigLocation</param-name>

           <param-value>/WEB-INF/log4j.xml</param-value>

</context-param>

에서 log4j가 로딩될 때 webAppRootKey를 정의하지 않았기 때문에 default값인 webapp.root가 중복이 되어 나타나는 에러입니다..

 

 

이런경우에는 에러 메시지의 내용처럼 web.xml에 다음과 같이 중복이 되지 않게webAppRootKey를 정의해주면 에러가 나타나지 않습니다..

<context-param>

           <param-name>webAppRootKey</param-name>

           <param-value>pa.root</param-value>

</context-param>

 

서버를 재기동하면 다음과 같은 로그를 볼 수 있습니다.

2008. 3. 6 오후 8:39:02 org.apache.catalina.core.ApplicationContext log

정보: Set web app root system property: 'pa.root' = [C:\server\Tomcat 6.0\webapps\pa\]