2011-02-08 2 views
6

Tomcat 6의 Liferay 5.2.3에 포틀릿을 배포하고 있습니다.이 오류는 포틀릿 중 하나에서만 발생합니다. java.lang.IllegalStateException : 루트 컨텍스트 특성의 형식이 WebApplicationContext가 아닙니다.

java.lang.IllegalStateException: Root context attribute is not of type WebApplicationContext 

는 제가 조사를 좀 해봤가 웹을 필요로 할 때 스프링 포틀릿 애플리케이션 컨텍스트를 인스턴스화하는 것을 발견했다. 다른 * .jar 파일이 봄에 의해보고되는 경우하지만 내 web.xml 파일에 난 단지, contextLoaderListner

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

그리고 그 위에 수를 정의하고, 왜 내 다른 포틀릿를 제외한 배치받을까요?

몇 가지 재배포 후에 수정 사항을 얻습니다. 누군가가 좀 밝힐 수 있습니까?

답변

0

contextConfigLocation을 정의하지 않은 것 같습니다. web.xml에 당신은 또한 ContextLoaderListener에뿐만 아니라이 같은 뭔가를해야합니다 applicationContext.xml는 웹 애플리케이션에 대한 일반 설정 파일입니다

<context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value> 
     /WEB-INF/applicationContext.xml  
    </param-value> 

</context-param> 

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

. 스프링 포틀릿 MVC를 사용하는 경우

당신은 또한 당신의 web.xml이 있어야한다 :

<portlet> 
<portlet-name>sample</portlet-name> 
<portlet-class>org.springframework.web.portlet.DispatcherPortlet</portlet-class> 
<supports> 
    <mime-type>text/html</mime-type> 
    <portlet-mode>view</portlet-mode> 
</supports> 
<portlet-info> 
    <title>Sample Portlet</title> 
</portlet-info> 
</portlet> 
: 당신은 portlet.xml에서

<servlet> 
    <servlet-name>ViewRendererServlet</servlet-name> 
    <servlet-class>org.springframework.web.servlet.ViewRendererServlet</servlet-class> 
</servlet> 

<servlet-mapping> 
    <servlet-name>ViewRendererServlet</servlet-name> 
    <url-pattern>/WEB-INF/servlet/view</url-pattern> 
</servlet-mapping> 

을 나는 당신이 당신의 포틀릿을 지정하려면이 같은 뭔가를 생각

아직 봄 포틀릿 MVC 참조 documentation

희망 사항을 참조하십시오.

1

근본 원인은 포털의 클래스 인스턴스를 "매달아"포털/응용 프로그램 서버의 정적 변수 인 것 같습니다. 두 가지 공통적 인 원인은 log4j 및 java 로깅입니다. 둘 다 응용 프로그램 컨테이너에서 일반적으로 사용됩니다.

로거에 대한 자세한 내용은 log4j and the thread context classloaderhttp://logback.qos.ch/manual/loggingSeparation.html을 참조하십시오. 제안은 log4j.jar을 WAR 파일에 넣으려면 로그백 OR을 사용하여 SLF4J를 사용하는 것입니다 (일부 컨테이너가이 솔루션을 방해 할지라도) 올바른 클래스 로더에 있어야합니다.

또한 컨테이너에있는 다른 클래스가 원인 일 수 있습니다. 로깅은 일반적인 문제 일뿐입니다.

관련 문제