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

Servlets/JSP Java Discussion :

probleme avec HttpSessionListener


Sujet :

Servlets/JSP Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut probleme avec HttpSessionListener
    Bonjour,
    je suis debutant en J2EE et j'essai d'ecrire une simple Servlet avec une realisation de HttpSessionListener, seulement le hic est qu'en ajoutant le code suivant ds le fichier web.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <listener>
            <listener-class>newpackage.ListenerClass</listener-class>
    </listener>
    Tomcat6.0 me sort l'erreur suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext stop
    INFO: Le conteneur org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/ServletApp] n'a pas été démarré
    29 janv. 2008 07:46:47 org.apache.catalina.startup.HostConfig checkResources
    INFO: Repli (undeploy) de l'application web ayant pour chemin de contexte /ServletApp
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext start
    GRAVE: Error listenerStart
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext start
    GRAVE: Erreur de démarrage du contexte [/ServletApp] suite aux erreurs précédentes
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext start
    GRAVE: Error listenerStart
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext start
    GRAVE: Erreur de démarrage du contexte [/ServletApp] suite aux erreurs précédentes
    et le log localhost de tomcat est le suivant:
    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
     
    java.lang.InstantiationException: newpackage.ListenerClass
            at java.lang.Class.newInstance0(Class.java:340)
            at java.lang.Class.newInstance(Class.java:308)
            at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3774)
            at org.apache.catalina.core.StandardContext.start(StandardContext.java:4337)
            at org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java:1237)
            at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:373)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
            at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
            at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
            at java.lang.Thread.run(Thread.java:619)
    29 janv. 2008 07:46:47 org.apache.catalina.core.StandardContext listenerStart
    GRAVE: L'installation des écouteurs (listeners) de l'application a été sautée suite aux erreurs précédentes
    Quelqu'un a-t-il une idee?

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Mars 2007
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 392
    Par défaut
    peux-tu mettre le code de ta class newpackage.ListenerClass ?

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    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
     
    public class ListenerClass implements HttpSessionListener
    {
    	private FirstServlet parent;
    	private Statement stmt;
    	private static int num = 3;
     
    	public ListenerClass(FirstServlet p) {
    		parent = p;
    	}
     
    	public void sessionCreated(HttpSessionEvent arg0) {
    	}
     
    	public void sessionDestroyed(HttpSessionEvent arg0)
    	{
    		ListenerClass.num = -1;
     
    		if(stmt == null)
    		{
    			try {
    				stmt = parent.getCon().createStatement();
    			}
    			catch(SQLException ex) {
    			}
    		}
     
    		try {
    			stmt.executeUpdate("INSERT INTO login(session) VALUES('" + arg0.getSession().getAttribute("sessionId") + "')");
    		}
    		catch(SQLException ex) {
    		}
    	}
     
    	public static int getNum() {
    		return ListenerClass.num;
    	}
    }

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    442
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 442
    Par défaut
    Bonjour,

    Citation Envoyé par Zorgz Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	public ListenerClass(FirstServlet p) {
    		parent = p;
    	}
    C'est quoi ce constructeur ?

    Je pense qu'il te faut un constructeur vide, je ne vois pas comment le conteneur de servlet peut deviner d'injecter une instance de FirstServlet dynamiquement...

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 139
    Par défaut
    en effet ca marche!!!

    mais je comprend pas pourquoi le constructeur il devait etre vide??

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par Zorgz Voir le message
    mais je comprend pas pourquoi le constructeur il devait etre vide??
    Tout simplement parce que l'instance du listener est créé par le moteur de servlet (Tomcat en l'occurence), et qu'il n'a pas de paramètre à lui passer...


    En clair le serveur doit utiliser un code comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HttpSessionListener listener = Class.forName("newpackage.ListenerClass").newInstance();
    a++

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

Discussions similaires

  1. Probleme avec la copie des surfaces
    Par Black_Daimond dans le forum DirectX
    Réponses: 3
    Dernier message: 09/01/2003, 10h33
  2. Problèmes avec le filtrage des ip
    Par berry dans le forum Réseau
    Réponses: 9
    Dernier message: 30/12/2002, 07h51
  3. probleme avec la touche F10
    Par b.grellee dans le forum Langage
    Réponses: 2
    Dernier message: 15/09/2002, 22h04
  4. Probleme avec fseek
    Par Bjorn dans le forum C
    Réponses: 5
    Dernier message: 04/08/2002, 07h17
  5. [Kylix] probleme avec un imagelist
    Par NicoLinux dans le forum EDI
    Réponses: 4
    Dernier message: 08/06/2002, 23h06

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