2011-10-09 31 views
16

Este web.xml en el archivo WEB-INFjava.lang.IllegalStateException: no se encontró WebApplicationContext: no se ha registrado ContextLoaderListener?

<?xml version="1.0" encoding="UTF-8"?> 

<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 

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

    <filter> 
     <filter-name>LoginFilter</filter-name> 
     <filter-class>glpi.filter.LoginFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>LoginFilter</filter-name> 
     <url-pattern>/index.jsp</url-pattern> 
    </filter-mapping> 

    <servlet> 
     <servlet-name>context</servlet-name> 
     <servlet-class>org.springframework.web.context.ContextLoaderServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet> 
     <servlet-name>dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

     <servlet> 
     <servlet-name>action</servlet-name> 
     <servlet-class>org.apache.struts.action.ActionServlet</servlet-class> 
     <init-param> 
      <param-name>config</param-name> 
      <param-value>/WEB-INF/struts-config.xml</param-value> 
     </init-param> 
     <init-param> 
      <param-name>debug</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <init-param> 
      <param-name>detail</param-name> 
      <param-value>2</param-value> 
     </init-param> 
     <load-on-startup>2</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>dispatcher</servlet-name> 
     <url-pattern>*.htm</url-pattern> 
    </servlet-mapping> 
    <servlet-mapping> 
     <servlet-name>action</servlet-name> 
     <url-pattern>*.do</url-pattern> 
    </servlet-mapping> 
    <session-config> 
     <session-timeout> 
      30 
     </session-timeout> 
    </session-config> 
    <welcome-file-list> 
     <welcome-file>/login.jsp</welcome-file> 
    </welcome-file-list> 

</web-app> 
+0

duplicado posible de [Sin WebApplicationContext encontrado:? Hay ContextLoaderListener registrada] (https://stackoverflow.com/questions/8924761/no-webapplicationcontext-found-no-contextloaderlistener-registered) – BalusC

Respuesta

20

Creo que se echa en falta el oyente contextual de carga (para recoger el archivo de contexto muelle (s)).

Agregue esto a su web.xml

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

También puede revisar la sección deweb de configuración inicial @http://static.springsource.org/spring/docs/2.0.x/reference/beans.html

+1

gracias, pero cuando agrego el Context Loader listener, El módulo: HELPDESKGESTION \ nbproject \ build-impl.xml: 719: no se ha implementado. – majda88

+3

difícil de comentar sobre eso, sin saber todo lo que está pasando. Pero de lo que estoy seguro es de que su pregunta relevante aquí debe ser resuelta por el fragmento de arriba en mi respuesta. – Saket

12

Usted tiene tanto ContextLoaderServlet y DispatcherServlet configurar para cargar-on-startup = 1. Eso significa que cualquiera de ellos podría comenzar primero, y necesita que el ContextLoaderServlet comience primero, ya que eso es lo que crea el WebApplicationContext raíz que su error dice que falta. Deje, pues, load-on-startup de ContextLoaderServlet en 1, y cambie DispatcherServlet a 2 o superior.

En realidad, es preferible utilizar ContextLoaderListener en lugar del Servlet a menos que esté en un contenedor muy viejo donde el Oyente no funciona correctamente.

+0

¡¡Respuesta real !! +1 – gavenkoa

9

Agregue el siguiente código en el archivo web.xml, porque busca el contexto para cargar, así que tenemos que declararlo inicialmente.

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

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

He tropezado recientemente sobre el mismo tema, y ​​sabía a ciencia cierta que no podría ser causada por una mala configuración, ya he copiado todo el trabajo instalación de Tomcat desde otra máquina. Sin embargo, seguí recibiendo la misma excepción:

java.lang.IllegalStateException: No WebApplicationContext found: not in a DispatcherServlet request and no ContextLoaderListener registered? 

Como he descubierto con el tiempo, fue una versión de la JVM equivocada de que rompió la aplicación: éste utiliza Java 7, mientras que la instancia de trabajo (y la aplicación de web) estaba en Java 8.

Espero que ayude a alguien a luchar con este mensaje de error contra-intuitivo.

+0

¿Puedo preguntar a qué se refiere con 'this one' y con' the working instance'? – Stephane

+1

'Este 'se refiere a la instancia que da el error,' working instance' es la fuente en otra máquina desde la que copié todo (que funcionaba bien). – yktoo

Cuestiones relacionadas