IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Web Java Discussion :

Context Spring webapp


Sujet :

Spring Web Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut Context Spring webapp
    Bonjour à tous

    Je suis en train de configurer le context de mon application web sur serveur j2EE. J'utilise aussi Maven pour mes builds.
    J'ai donc différents projets (service-metier-webapp) et j'ai un souci de context au niveau de ma webapp.

    Voici l'erreur (qui semble être basique -_-) (oui je me forme ; ) )

    GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [contextEchange], from group with resource name [classpath*:src/main/resources/beanRefContext.xml]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contextEchange' is defined
    J'ai bien compris l'erreur qui stipule qu'il ne trouve mon bean nomé "contextEchange" !!

    Hors il est bien présent dans mon fichier beanRefContext !

    Voici le Web.Xml il est présent dans src/main/webapp/WEB-INF (simple dossier sous-jacent)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    
        <display-name>WebappEchangeDynamic</display-name>
        <description>BlazeDS Application</description>
    
    	<context-param>
    		<param-name>flex.class.path</param-name>
    		<param-value>/WEB-INF/flex/hotfixes,/WEB-INF/flex/jars</param-value>
    	</context-param>
    	
    	<!-- Ajout du context Spring -->
    	<context-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>/WEB-INF/applicationContext.xml</param-value>
        </context-param>
        
        <!-- Localisation des fichier de context de l'application -->
    	<context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>src/main/resources/beanRefContext.xml</param-value>
        </context-param>
           
        <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    	
    	
    	<filter>
            <filter-name>encoding-filter</filter-name>
            <filter-class>
                org.springframework.web.filter.CharacterEncodingFilter
            </filter-class>
            <init-param>
                <param-name>encoding</param-name>
                <param-value>UTF-8</param-value>
            </init-param>
        </filter>
     
        <filter-mapping>
            <filter-name>encoding-filter</filter-name>
            <url-pattern>/*</url-pattern>
        </filter-mapping>
    	
    	
    
        <!-- Http Flex Session attribute and binding listener support -->
        <listener>
            <listener-class>flex.messaging.HttpFlexSession</listener-class>
        </listener>
        
        <!-- Ajout du listener lier à Spring -->
    	<listener>
            <listener-class>
                 org.springframework.web.context.ContextLoaderListener
            </listener-class>
        </listener>
    
        <!-- MessageBroker Servlet --> 
        
        <!--  à modifier pour faire mapping avec spring -->
        
        <servlet>
            <servlet-name>MessageBrokerServlet</servlet-name>
            <display-name>MessageBrokerServlet</display-name>
            <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class>
            <init-param>
                <param-name>services.configuration.file</param-name>
                <!--  <param-value>/WEB-INF/flex/services-config.xml</param-value> -->
           		<param-value>/WEB-INF/flex-servlet-context</param-value>
           </init-param>
            <load-on-startup>1</load-on-startup>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>MessageBrokerServlet</servlet-name>
            <url-pattern>/messagebroker/*</url-pattern>
        </servlet-mapping>
    
        <welcome-file-list>
            <welcome-file>index.html</welcome-file>
            <welcome-file>index.htm</welcome-file>
        </welcome-file-list>
    
        <!-- for WebSphere deployment, please uncomment -->
        <!--
        <resource-ref>
            <description>Flex Messaging WorkManager</description>
            <res-ref-name>wm/MessagingWorkManager</res-ref-name>
            <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type>
            <res-auth>Container</res-auth>
            <res-sharing-scope>Shareable</res-sharing-scope>
        </resource-ref>
        -->
    
    </web-app>
    et le fichier beanRefContext.xml situé dans src/main/resources/ qui est un folder buildPath

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
    
    <beans>
    
    	<bean name="contextEchange" class="org.springframework.context.support.ClassPathXmlApplicationContext" lazy-init="false" >
    		<constructor-arg>
    			<list>
    				<value>classpath:contextModele.xml</value>	
    				<value>classpath:contextService.xml</value>
    				<!--  <value>classpath:contextFacade.xml</value>-->
    				<value>classpath:hibernate.cfg.xml</value>
    			</list>
    		</constructor-arg>
    	</bean>
    	
    	<!-- 
    	<bean id="facade" class="com.teamlog.rosebud2.facade.Facade">
    		<property name="servicePersonne" ref="ServicePersonne"/>
    	</bean>
     	-->
    
    </beans>
    D'autant plus que, si je modifie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param-value>src/main/resources/beanRefContext.xml</param-value>
    par

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <param-value>classpath:beanRefContext.xml</param-value>
    J'ai une erreur IO fichier introuvable :s (je pense du coup que cela me générera d'autre erreur ensuite...)

    classpath de la webapp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <classpath>
    	<classpathentry excluding="**" kind="src" output="target/classes" path="target/generated-resources"/>
    	<classpathentry kind="src" path="src.main.java"/>
    	<classpathentry kind="src" path="src.main.resources"/>
    	<classpathentry kind="src" path="src.mai.t"/>
    	<classpathentry kind="src" path="src.main.ressources"/>
    	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
    	<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
    	<classpathentry kind="output" path="target/classes"/>
    </classpath>
    Mon fichier applicationContext est vide !

    Pourquoi donc ce bean n'est reconnu ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut
    Etant toujours confronté au même problème, j'apporte de nouveau fait me perturbant !!

    J'ai voulut repartir sur une autre base en supprimant ce fichier beanRefContext et recréer un autre fichier context ! J'ai donc supprimer dans mon web.xml la référence adéquate (context param) et ce fichier (beanRefContext.xml). Hors j'ai toujours là même erreur lorsque je lance mon serveur tomcat.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
    org.springframework.beans.factory.access.BootstrapException: Unable to return specified BeanFactory instance: factory key [contextEchange], from group with resource name [classpath*:beanRefContext.xml]; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named 'contextEchange' is defined
    J'ai fait une recherche de "beanRefContext.xml" ainsi que de "beanRefContext" dans tout fichier et dossier de mon disque dur pour supprimer tout lien direct ! et j'ai encore la même erreur, je n'y comprend rien Comment peut il y avoir une resource nommé [classpath*:beanRefContext.xml] alors qu'elle est était supprimé !!!!!

    J'ai beau faire un clean, redémarrer eclipse, ne sait on jamais , rien y fait !!

  3. #3
    Membre Expert
    Avatar de Patriarch24
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2003
    Messages
    1 047
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2003
    Messages : 1 047
    Par défaut
    As tu essayé :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    <param-value>classpath:/beanRefContext.xml</param-value>

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12
    Par défaut
    oui j'ai essayé celà, ça fonctionne quand ça veut...

    Rappel : fichier de context :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
           xsi:schemaLocation="http://www.springframework.org/schema/beans 
               http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-3.0.xsd">
     
     
     
    	<bean name="contextEchange" class="org.springframework.context.support.ClassPathXmlApplicationContext" lazy-init="false" >
    		<constructor-arg>
    			<list>
    				<value>classpath:contextModele.xml</value>	
    				<!--  <value>classpath:contextService.xml</value> -->
    				<!--  <value>classpath:contextFacade.xml</value>-->
    				<value>classpath:hibernate.cfg.xml</value>
    			</list>
    		</constructor-arg>
    	</bean>
     
    </beans>
    Fichier web Xml

    je specifie par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>./lesContexts.xml</param-value>
        </context-param>
     <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    Le fichier est trouver avec le bean "contextEchange" appellé (lors du dernier post)

    Je modifie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>./beanRefContext.xml</param-value>
        </context-param>
     <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    Fichier introuvable (erreur IO) alors qu'il est présent au même niveau que le fichier "lesContexts.xml"

    Je modifie encore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- Localisation des fichier de context de l'application -->
    	<context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>./refcontexteu.xml</param-value>
        </context-param>
        
        <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    il trouve le fichier mais pas le bean "contextEchange" (alors qu'il est bien présent dans le fichier)
    Note : lesContexts.xml et beanRefContext et etc on le même code.

    Je modifie toujours :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- Localisation des fichier de context de l'application -->
    	<context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>./lesContextss.xml</param-value>
        </context-param>
        
        <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    Il trouve le fichier "lesContextss.xml" (avec deux "SS" à la fin) mais pas le bean , comme précédemment, hors ce fichier n'existe pas, je faisait un test, il y a donc un vrai souci quelque part ?? :s

    Dernier test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!-- Localisation des fichier de context de l'application -->
    	<context-param>
            <param-name>locatorFactorySelector</param-name>
            <param-value>./lesContexts.xml</param-value>
        </context-param>
        
        <context-param>
    		<param-name>parentContextKey</param-name>
    		<param-value>contextEchange</param-value>
    	</context-param>
    Le bean "contextEchange" est trouvé (après une autre erreur apparait mais ce n'est plus le même sujet )

    il y a vraiment un caprice quelque part mais ne le comprend

Discussions similaires

  1. recuper un bean dans le context spring
    Par Esil2008 dans le forum Spring
    Réponses: 4
    Dernier message: 21/11/2008, 09h44
  2. Réponses: 1
    Dernier message: 19/11/2008, 14h38
  3. [Framework] [Core] Contexte Spring d'une source de données
    Par helios2092 dans le forum Spring
    Réponses: 4
    Dernier message: 24/10/2008, 10h54
  4. Charger un contexte spring, situé dans un jar
    Par emaison dans le forum Spring
    Réponses: 2
    Dernier message: 01/10/2007, 09h12
  5. Réponses: 1
    Dernier message: 18/01/2007, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo