Web Project에다가 Spring MVC를 적용하는 과정에서 web.xml 에 `Listener`를 추가하고 서버를 실행시키면 아래의 메시지가 출력한다.

  
2월 04, 2013 2:50:09 오후 org.apache.catalina.core.StandardContext listenerStop
심각: Exception sending context destroyed event to listener instance of class org.springframework.web.context.ContextLoaderListener
java.lang.IllegalStateException: BeanFactory not initialized or already closed - call 'refresh' before accessing beans via the ApplicationContext
	at org.springframework.context.support.AbstractRefreshableApplicationContext.getBeanFactory(AbstractRefreshableApplicationContext.java:172)
	at org.springframework.context.support.AbstractApplicationContext.destroyBeans(AbstractApplicationContext.java:1071)
	at org.springframework.context.support.AbstractApplicationContext.doClose(AbstractApplicationContext.java:1045)
	at org.springframework.context.support.AbstractApplicationContext.close(AbstractApplicationContext.java:993)
	at org.springframework.web.context.ContextLoader.closeWebApplicationContext(ContextLoader.java:548)
	at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:142)
	at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4831)
	at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5478)
	at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559)
	at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
	at java.lang.Thread.run(Thread.java:722)


 

 발생원인

 

ContextLoaderListener 을 Listener로 등록해두면, 웹 애플리케이션이 시작할 때 자동으로 루트 애플리케이션 컨텍스트를 만들고 초기화를 한다. 디폴트Default로 XmlWebApplicationContext를 애플리케이션 컨텍스트 클래스가 지정되고 /WEB-INF/applicationContext.xml을 탐색한다. 이때, applicationContext.xml 파일을 찾지 못하면서 발생한다.


 

 해결방법

 

1. /WEB-INF/applicationContext.xml 생성 및 설정

2. web.xml 내에  <context-param></context-param> 으로 ~Context.xml 을 지정

  

        contextConfigLocation
        /WEB-INF/spring/appServlet/applicationContext.xml


위의 두 가지 방법 중 하나를 선택해서 처리하면 된다.



 

 문제원인  

 

WORKSPACE_LOC/spring-mvc-study/src/test/java 폴더가 없어서 나타나는 문제

종종 Java Project를 import 해서 properties 를 확인하다가 보면 상단에

'Build path entry is missing:'

라는 메시지가 보이는 경우가 있다.



 

 해결방법  

 

WORKSPACE_LOC/spring-mvc-study/src/test/java  폴더를 생성하면 된다.

프로젝트를 다시읽고Refresh 확인해보면 경고문구가 사라지는 것이 확인된다.




DispatcherServlerDI전략.mm



토비의 스프링 3

저자
이일민 지음
출판사
에이콘출판 | 2010-08-24 출간
카테고리
컴퓨터/IT
책소개
스프링 프레임워크 3 기초 원리부터 고급 실전활용까지 완벽 가이...
가격비교 글쓴이 평점  


깃헙(https://github.com)을 사용하는 것에 어느정도 익숙해진 요즘.

페이스북으로 우연히 알게된 우리깃Urigit(https://urigit.com)

제주도에 있는 웹서비스 개발팀 '애조로 작업실(https://urigit.com/about_us)'에서 개발 진행중인 서비스라고 합니다.

열심히 서비스 준비중이라고 하니까 '초대권 신청'하고 기다리고 있겠습니다. +_+)


 

 현상

 

이클립스Eclipse에서 안드로이드 프로젝트Android Project를 임포트import([import -> Existing Android Code into Workspace]) 하고보면, 종종 아래 그림처럼 프로젝트에 있는 소스코드에 온통 빨간라인(Error Line)이 생기는 경우가 종종 있다. [Project] -> [Clean]을 해도 사라지지 않는다. 


 

 원인

 

소스 빌드가 정상적으로 진행되지 않아서 생기는 문제라고 추측된다. 유독 안드로이드 프로젝트를 임포트 했을 때 나타나는 편이다.


 

 해결방법 

 

이클립스를 종료했다가 다시 시작해서, 이클립스가 시작하면서 워크스페이스에 있는 소스를 자동으로 빌드하도록 만들면 된다.

혹은, [Project] -> [Build Automatically] 체크해제 후에 [Project] -> [Clean] 하고 빌드를 다시해볼 수 있을 것이다(이 방법은 잘 안되는 듯 한 기억이).

예제 소스파일을 임포트해서 열어볼 때마다 왕왕 발생하고 있다.

+ Recent posts