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 Java Discussion :

Mapper une classe SessionListener dans un WebApplicationContext Spring


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut Mapper une classe SessionListener dans un WebApplicationContext Spring
    Bonjour à tous,
    je rencontre un soucis de configuration de ma classe Listener dans le context spring.

    En effet ma classe Listener fait appel à un bean qui est référencé dans le context spring et donc pour y accéder j'ai ajouté lors de l'appel à cette classe dans mon Listener ce code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    @Resource
    private MessageServices messageService;//interface
    dans le context spring il est référencé sous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <bean id="messageServiceBean" class="ci.service.MessageServiceImpl"/>
    Voici le message d'erreur que je reçois
    GRAVE: Erreur lors de la configuration de la classe d'écoute de l'application
    javax.naming.NameNotFoundException: Le Nom ci.session.UserSessionListener n'est pas lié à ce Contexte
    la classe Listener est bien référencer dans mon web.xml

    Merci pour vos suggestions

  2. #2
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Après quelques recherches, je viens de lire dans la doc ceci,
    Publishes HttpSessionApplicationEvents to the Spring Root WebApplicationContext.
    Maps javax.servlet.http.HttpSessionListener.sessionCreated() to HttpSessionCreatedEvent.
    Maps javax.servlet.http.HttpSessionListener.sessionDestroyed() to HttpSessionDestroyedEvent.
    Le truc c'est que j'ai des erreurs dans mon context quand je mappe comme ils ont dit, biensure je change le
    Maps javax.servlet.http.HttpSessionListener.sessionDestroyed() to HttpSessionDestroyedEvent.
    par le mien
    Maps ci.session.UserSessionListener.sessionDestroyed() to HttpSessionDestroyedEvent.
    Merci, c'est vrai que je débute en plein config spring alors pleassee heellppp

  3. #3
    Membre éclairé Avatar de cashmoney
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 298
    Par défaut
    Après plusieurs recherches, j'ai dans une doc anglaise que l'on pouvait faire une injection de dépendance de mon Listener dans mon bean référencé dans le webApplicationcontext de Spring.
    On pourrait le faire de 2 manières par annotation ou par injection XML:
    - par annotation
    ce qui veut dire que l'on doit mettre dans nos classes différentes des annotations pour indiquer à spring context de faire cette injection
    Dans mon beans référencé dans sring
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    @Service
    public class MessageServiceImpl implements MessageServices {
    ...
    ...
    }
    et dans mon Listener
    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
     
    @Service
    public class UserSessionListener implements HttpSessionListener {
     
    //Appel de l'interface implémenté par mon bean référencé dans Srping
    private MessageServices messageService;
    ...
     
    //La methode où sera utilisé la method inclus dans l'interface
            @Autowired
    	public void sessionDestroyed(HttpSessionEvent se) {
     
    		HttpSession session = se.getSession();
     
    		// Liaison avec le WebApplicationContext
    		ApplicationContext ctx = WebApplicationContextUtils
    				.getWebApplicationContext(session.getServletContext());
    				BeanFactory factory = ctx;
     
    		// messageService
    		User user = (User) factory.getBean("user");
    		messageService.removeUser(user);
    		// log request about session's that are invalidated
    		log.info("Session détruite: " + session.getId());
    	}
    }
    enfin dans mon webApplicationContext on aura
    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
     
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:aop="http://www.springframework.org/schema/aop"
    	xmlns:context="http://www.springframework.org/schema/context"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans
               http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
               http://www.springframework.org/schema/aop
               http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
               http://www.springframework.org/schema/context
               http://www.springframework.org/schema/context/spring-context-2.5.xsd">
     
    	<context:component-scan base-package="ci.service" />
    	<context:component-scan base-package="ci.session" />
     
    </beans>
    A la compilation j'obtiens cette erreur pour les 2 manières
    ERROR ContextLoader - Context initialization failed

    org.springframework.beans.factory.BeanCreationException:
    Error creating bean with name 'userSessionListener' defined in
    ServletContext resource [/WEB-INF/classes/webApplicationContext.xml]:
    Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property
    'messageServiceBean' of bean class [ci.session.UserSessionListener]: Bean
    property 'messageServiceBean' is not writable or has an invalid setter
    method. Does the parameter type of the setter match the return type of the
    getter?
    A lire mon erreur, J'applique un setter sur un bean qui doit renvoyer un getter??
    Je continue mes recherches...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 27/04/2006, 18h22
  2. Réponses: 4
    Dernier message: 08/03/2006, 19h07
  3. [Hibernate] Mapper une classe association
    Par mauvais_karma dans le forum Hibernate
    Réponses: 16
    Dernier message: 25/01/2006, 12h34
  4. Réponses: 10
    Dernier message: 10/01/2006, 14h14
  5. Réponses: 4
    Dernier message: 08/11/2005, 15h10

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