Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tomcat + lancement d'une webapp comportant un HttpSessionBindingListener

3 réponses
Avatar
Gabriel
Bonsoir,

j'ai une application web contenant une classe implémentant un
HttpSessionBindingListener.
Ca compile ok.
Au moment de déployer l'appli sous tomcat, j'obtiens ceci :

2004-08-02 22:32:54 StandardContext[/monAppli]Erreur lors de la
configuration de la classe d'écoute de l'application (application
listener) genGraph.Cleaner
java.lang.InstantiationException: genGraph.Cleaner
at java.lang.Class.newInstance0(Class.java:293)
at java.lang.Class.newInstance(Class.java:261)
at
org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3754)
at
org.apache.catalina.core.StandardContext.start(StandardContext.java:4321)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:789)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1083)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:478)
at org.apache.catalina.core.StandardService.start(StandardService.java:476)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2298)
at org.apache.catalina.startup.Catalina.start(Catalina.java:556)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:284)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:422)
Bref, il n'y parviens pas :(
je travaille avec une instance de tomcat (j'ai crée tous les repertoires
requis et tout et les autres applis (admin et manager) fonctionnent.

Si qqun a une idée car je sèche .

Merci !

--
--
email : on se découvre pour m'écrire :)

3 réponses

Avatar
jerome moliere
Gabriel wrote:

Bonsoir,

j'ai une application web contenant une classe implémentant un
HttpSessionBindingListener.
Ca compile ok.
Au moment de déployer l'appli sous tomcat, j'obtiens ceci :

2004-08-02 22:32:54 StandardContext[/monAppli]Erreur lors de la
configuration de la classe d'écoute de l'application (application
listener) genGraph.Cleaner
java.lang.InstantiationException: genGraph.Cleaner
at java.lang.Class.newInstance0(Class.java:293)
at java.lang.Class.newInstance(Class.java:261)
tel quel c'est un peu sec pour t'aider!!!

postes ton code ou la partie significative, un listener ne doit pas etre
bien gros!!!
je pense que dans la methode init() il doit y avoir uen reference vers
une librairie mal packagee ou qqch de ce genre...
des traces en console ou via du log4J seraient utiles pour aller plus loin..
navre de ne pouvoir faire mieux..
jerome

--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941

Avatar
Gabriel
tel quel c'est un peu sec pour t'aider!!!
postes ton code ou la partie significative, un listener ne doit pas etre
bien gros!!!
je pense que dans la methode init() il doit y avoir uen reference vers
une librairie mal packagee ou qqch de ce genre...
des traces en console ou via du log4J seraient utiles pour aller plus
loin..
navre de ne pouvoir faire mieux..
jerome
ok, voila un complément d'infos :) :

import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import java.util.*;
import java.io.*;

public class Cleaner implements HttpSessionBindingListener {

String path;

public Cleaner(String path) {
this.path = path + "/work/graphique/";
}

public void valueBound(HttpSessionBindingEvent event) {



String[] files;
FileExtFilter joker = new FileExtFilter("jpg");
File fl = new File(path);
files = fl.list(joker);

// Détermination de la date du jour en millisecondes écoulées depuis 1970
Calendar toto = Calendar.getInstance();
long today = toto.getTimeInMillis();


//Liste des fichiers du dossier graphique
for (int i = 0; i < files.length; i++) {

fl = new File(files[i].trim());
//System.out.println("test " + fl.lastModified());
long dateFichier = fl.lastModified();
long tmp = today - 86400000;

if (dateFichier < tmp) {
//System.out.println("effacement de " + fl.getName());
fl.delete();
}
}
}

public void valueUnbound(HttpSessionBindingEvent event) {
}
}

le site contient une servlet controleur (MVC) donc à l'initialisation,
je cree mon cleaner et je le mets dans la session.

Le pb vient en fait du web.xml de l'application : il n'aime pas ma façon
de déclarer un listener :
<listener>
<listener-class>genGraph.Cleaner</listener-class>
</listener>

le pb est que je génére mon web.xml avec xdoclet et qu'il me met le
listener dans les tlds !!
si je retire cette entrée,; ca déploie.

Mes questions :
ca va bien dans web.xml ?
prq il met ca dans taglib.tld ??

extrait de build.xml :
<!-- =================================================================== -->
<!-- Lancer XDoclet pour webdoclet
-->
<!--
=================================================================== -->
<target name="webdoclet" depends="prepare">

<echo>+---------------------------------------------------+</echo>
<echo>| |</echo>
<echo>| R U N N I N G W E B D O C L E T |</echo>
<echo>| |</echo>
<echo>+---------------------------------------------------+</echo>

<webdoclet destdir="${projet.gen-src.dir}"
mergedir="parent-fake-to-debug" excludedtags="@version,@author,@todo"
addedtags="@xdoclet-generated at ${TODAY},@copyright The XDoclet
Team,@author XDoclet,@version ${version}"
force="${samples.xdoclet.force}" verbose="false">

<fileset dir="${projet.src.java.dir}">
<include name="**/*Servlet.java" />
<include name="**/*Filter.java" />
<include name="**/*Tag.java" />
<include name="**/*Action.java" />
</fileset>

<deploymentdescriptor servletspec="2.3" destdir="${projet.web-inf.dir}">


<taglib uri="tagHTML"
location="${projet.web-inf.dir}/tlds/tagHTML.tld" />
<taglib uri="tagSQL" location="${projet.web-inf.dir}/tlds/tagSQL.tld" />

</deploymentdescriptor>
<jsptaglib jspversion="1.2" destdir="${projet.web-inf.dir}"
shortname="j2ee" validateXml="false" />
</webdoclet>
</target>

Merci en tout cas de t'interesser au pb :)


--
--
email : on se découvre pour m'écrire :)

Avatar
jerome moliere
Gabriel wrote:
tel quel c'est un peu sec pour t'aider!!!
postes ton code ou la partie significative, un listener ne doit pas
etre bien gros!!!
je pense que dans la methode init() il doit y avoir uen reference vers
une librairie mal packagee ou qqch de ce genre...
des traces en console ou via du log4J seraient utiles pour aller plus
loin..
navre de ne pouvoir faire mieux..
jerome


ok, voila un complément d'infos :) :
import javax.servlet.http.HttpSessionBindingListener;
import javax.servlet.http.HttpSessionBindingEvent;
import java.util.*;
import java.io.*;

public class Cleaner implements HttpSessionBindingListener {

String path;

public Cleaner(String path) {
this.path = path + "/work/graphique/";
}

public void valueBound(HttpSessionBindingEvent event) {



String[] files;
FileExtFilter joker = new FileExtFilter("jpg");
File fl = new File(path);
files = fl.list(joker);

// Détermination de la date du jour en millisecondes écoulées
depuis 1970
Calendar toto = Calendar.getInstance();
long today = toto.getTimeInMillis();


//Liste des fichiers du dossier graphique
for (int i = 0; i < files.length; i++) {

fl = new File(files[i].trim());
//System.out.println("test " + fl.lastModified());
long dateFichier = fl.lastModified();
long tmp = today - 86400000;

if (dateFichier < tmp) {
//System.out.println("effacement de " + fl.getName());
fl.delete();
}
}
}

public void valueUnbound(HttpSessionBindingEvent event) {
}
}

le site contient une servlet controleur (MVC) donc à l'initialisation,
je cree mon cleaner et je le mets dans la session.

Le pb vient en fait du web.xml de l'application : il n'aime pas ma façon
de déclarer un listener :
<listener>
<listener-class>genGraph.Cleaner</listener-class>
</listener>

ca c'est bon :)

le pb est que je génére mon web.xml avec xdoclet et qu'il me met le
listener dans les tlds !!
si je retire cette entrée,; ca déploie.

Mes questions :
ca va bien dans web.xml ?
oui et c'est ok pour ce tag...

prq il met ca dans taglib.tld ??

je n'utilise pas les tags libs....

par contre je pense que ton gros probleme vient de ton constructeur non
rivial...
enleves le pour voir ...
Jerome
--
Auteur cahier du programmeur Java tome 2 - Eyrolles 10/2003
http://www.eyrolles.com/php.informatique/Ouvrages/ouvrage.php3?ouv_ean13—82212111941