web-dev-qa-db-fra.com

java.lang.IllegalStateException: aucun WebApplicationContext trouvé: aucun ContextLoaderListener enregistré?

C'est le fichier web.xml dans WEB-INF

<?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>
18
majda88

Je pense que vous manquez le programme d’écoute du chargeur de contexte (pour choisir votre fichier de contexte Spring).

Ajoutez ceci à votre web.xml

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

Vous pouvez également consulter la section Configuration Web initiale section @ http://static.springsource.org/spring/docs/2.0.x/reference/beans.html

21
Saket

ContextLoaderServlet et DispatcherServlet sont définis sur load-on-startup = 1. Cela signifie que l'un des deux peut commencer en premier et que vous avez besoin du ContextLoaderServlet pour démarrer en premier, car c'est ce qui crée la racine WebApplicationContext que votre erreur dit manquante. Laissez donc la charge au démarrage de ContextLoaderServlet à 1 et modifiez le DispatcherServlet à 2 ou plus.

En fait, il est préférable d’utiliser ContextLoaderListener au lieu du Servlet à moins que vous ne vous trouviez sur un très vieux conteneur dans lequel le Listener ne fonctionne pas correctement.

14
Ryan Stewart

Ajoutez le code suivant dans le fichier web.xml, bcs il cherche le contexte à charger donc nous devons le déclarer initialement.

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

Je suis tombé récemment sur le même problème et je savais que cela ne pouvait pas être causé par une mauvaise configuration car j'avais copié toute l'installation working Tomcat à partir d'une autre machine. Pourtant, j'ai gardé la même exception:

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

Comme je l'ai finalement compris, c'est une mauvaise version de JVM qui a cassé l'application: celle-ci utilisait Java 7 , alors que l'instance de travail (et l'application Web) était sur Java 8 .

J'espère que cela aidera quelqu'un aux prises avec ce message d'erreur contre-intuitif.

0
yktoo