2011-02-08 23 views
6

Sadece portletinizin biri için bu hatayı almaya WebApplicationContext Kök bağlam öznitelik türünün değil. java.lang.IllegalStateException: Tomcat 6. Liferay 5.2.3 üzerinde Portletleri'ni dağıtma am

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

biraz araştırma yaptım ve bir web biri gerektiğinde Bahar Portlet uygulama bağlamı başlatmasını olduğunu öğrendim. Farklı * .jar dosya Bahar tarafından aranır ediliyordu Ama eğer benim web.xml''deki Ben sadece contextLoaderListner

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

Üstüne üstlük için belirleyici ediyorum, o zaman neden benim diğer portletlerinin biri hariç dağıtılan olsun ki?

çekilmeleri için çift bir düzeltme bu aldıktan sonra. Birisi biraz ışık tutabilir mi?

cevap

0

Size contextConfigLocation öğesini tanımlamadığınız gibi geliyor mu? Web.xml da contextLoaderListener ek olarak böyle bir şey olmalı: applicationContext.xml bir webapp için normal bir yapılandırma dosyası olan

<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> 

. Yay portleti MVC kullanarak eğer

Ayrıca web.xml''deki bu olmalıdır:

<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> 
: En portlet.xml olarak

<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> 

ben size portletlerini belirtmek için böyle bir şey var sanırım

Henüz yapmadıysanız, bahar portleti mvc referansına bakın. documentation

Yardım edin.

1

kök neden portletten bir sınıf örneğine "üzerine asılı" portalı/uygulama sunucusu statik değişken olarak görünmektedir. Yaygın olarak görülen iki suç, her ikisi de yaygın olarak uygulama içerekleri tarafından kullanılan log4j ve java kaydıdır.

kaydedicilerinin fazla tartışma için log4j and the thread context classloader ve http://logback.qos.ch/manual/loggingSeparation.html bakınız. Öneri SLF4J'yi logback ile VEYA log4j.jar'i WAR dosyanıza koyduğunuzdan emin olmak için sağ classloader'da olduğundan emin olun (bazı kaplar bu çözümü engelleyecektir).

Ayrıca, kap içinde mevcut olan bir başka sınıfı neden olabilir. Günlüğe kaydetme sadece yaygın bir sorundur.