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

Développement Web en Java Discussion :

Erreur lors du démarrage du filtre


Sujet :

Développement Web en Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut Erreur lors du démarrage du filtre
    Bonjour

    Je suis en train de créer une application J2EE et je voudrais utiliser les filtres. J'ai alors créé un filtre nommé PrechargementFilter. Mais juste après sa création, j'ai le message d'erreur suivant dans "Apache Tomcat 7.0.34.0 log" de netbeans:

    nov. 10, 2014 10:17:56 PM org.apache.catalina.core.StandardContext filterStart
    Grave: Exception au démarrage du filtre PrechargementFilter
    java.lang.NullPointerException
    at filters.PrechargementFilter.init(PrechargementFilter.java:41)
    at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:278)
    at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:259)
    at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:383)
    at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:104)
    at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4650)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5306)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1637)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
    at java.util.concurrent.FutureTask.run(FutureTask.java:262)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:744)
    Voici la Class PrechargementFilter

    /*
    * To change this template, choose Tools | Templates
    * and open the template in the editor.
    */
    package filters;

    import java.io.IOException;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;


    import beans.Offre;
    import dao.DAOFactory;
    import dao.OffreDao;
    import static filters.PrechargementFilter.ATT_SESSION_OFF;
    import static filters.PrechargementFilter.CONF_DAO_FACTORY;

    public class PrechargementFilter implements Filter {
    public static final String CONF_DAO_FACTORY = "daofactory";
    // public static final String ATT_SESSION_EMP = "employeurs";
    public static final String ATT_SESSION_OFF = "offres";
    // public static final String ATT_SESSION_CPT_OFF = "cpt_offres";
    //private EmployeurDao employeurDao;
    private OffreDao offreDao;

    public void init( FilterConfig config ) throws ServletException {
    /* Récupération d'une instance de nos DAO Client et Commande
    this.employeurDao = ( (DAOFactory) config.getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getEmployeurDao();*/
    this.offreDao = ( (DAOFactory) config.getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getOffreDao();
    }

    public void doFilter( ServletRequest req, ServletResponse res, FilterChain chain ) throws IOException,
    ServletException {
    /* Cast de l'objet request */
    HttpServletRequest request = (HttpServletRequest) req;

    /* Récupération de la session depuis la requête */
    HttpSession session = request.getSession();

    /*
    * Si la map des clients n'existe pas en session, alors l'utilisateur se
    * connecte pour la première fois et nous devons précharger en session
    * les infos contenues dans la BDD.
    */
    /* if ( session.getAttribute( ATT_SESSION_EMP ) == null ) {
    /*
    * Récupération de la liste des clients existants, et enregistrement
    * en session

    List<Employeur> listeEmployeurs = employeurDao.lister();
    Map<Long, Employeur> mapEmployeurs = new HashMap<Long, Employeur>();
    for ( Employeur employeur : listeEmployeurs ) {
    mapEmployeurs.put( employeur.getId(), employeur );
    }
    session.setAttribute( ATT_SESSION_EMP, mapEmployeurs );
    }

    if ( session.getAttribute( ATT_SESSION_OFF ) == null ) {

    int aa =offreDao.compter();
    System.out.println("le second enreg:" +aa);
    session.setAttribute( ATT_SESSION_OFF, aa );
    }*/

    if ( session.getAttribute( ATT_SESSION_OFF ) == null ) {
    /*
    * Récupération de la liste des clients existants, et enregistrement
    * en session
    */
    List<Offre> listeOffres = offreDao.lister();
    Map<Long, Offre> mapOffres = new HashMap<Long, Offre>();
    for ( Offre offre : listeOffres ) {
    mapOffres.put( offre.getId(), offre );
    }
    session.setAttribute( ATT_SESSION_OFF, mapOffres );
    }


    /* Pour terminer, poursuite de la requête en cours */
    chain.doFilter( request, res );
    }

    public void destroy() {
    }
    }
    Voici le contenu de mon fichier web.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlnssi="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_3_0.xsd">
    <filter>
    <filter-name>PrechargementFilter</filter-name>
    <filter-class>filters.PrechargementFilter</filter-class>
    </filter>
    <filter-mapping>
    <filter-name>PrechargementFilter</filter-name>
    <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
    <servlet-name>Image</servlet-name>
    <servlet-class>servlets.Image</servlet-class>
    </servlet>
    <servlet-mapping>
    <servlet-name>Image</servlet-name>
    <url-pattern>/Image</url-pattern>
    </servlet-mapping>
    <session-config>
    <session-timeout>
    30
    </session-timeout>
    </session-config>
    </web-app>
    J'ai même redémarré le serveur mais le message d'erreur est toujours là.

    Que faire?

    Merci

  2. #2
    Membre confirmé Avatar de skulled
    Inscrit en
    Décembre 2006
    Messages
    120
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 120
    Par défaut
    Bonjour,

    Tu as une erreur à la ligne 41 de ta class. Dans la méthode init(), quel est l'objet qui est "null"? Est-ce l'objet "config"?

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    C'est la ligne suivante qui génère l'erreur:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
           this.offreDao = ( (DAOFactory) config.getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getOffreDao();
    Parce que quand je la mets en commentaire, je n'ai plus de message d'erreur.

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Et bien, il semblerait qu'il n'y aie rien dans config.getServletContext().getAttribute( CONF_DAO_FACTORY ).

    Ce qui me semble normal, je ne vois pas comment le conteneur saurait qu'il faut injecter des attributs pareils dans ton servletContext.

    Commence par afficher dans ta console le contenu de config.getServletContext().getAttributeNames() et tu verra que ça ne contient pas ce que tu crois.

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Pourtant j'ai utilisé le même code il n y a pas si longtemps, et je n'ai pas eu ce genre d'erreur. C'est décidé: j'abandonne les dao. Au moins pour quelques temps. J'ai un site à lancer depuis plusieurs mois déja et le fait de ne pas totalement maitriser les dao m'a beaucoup ralenti. Je vais donc mettre les dao de coté et lancer mon site, comme ça j'essaierai de les intégrer petit à petit.

    Merci pour tout.

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Ce n'est pas un problème de DAO mais un problème de compréhension de base des servlets là

    Les DAO n'ont pas besoin de filtres servlet, et dans un servletcontext, tu trouvera ce que le conteneur J2EE veux bien y mettre. On peut passer des paramètres de configuration à des servlets/filtres, mais ces paramètres sont des String, pas des instances de factory.

  7. #7
    Membre éclairé
    Inscrit en
    Juin 2005
    Messages
    578
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 578
    Par défaut
    Bon, finalement je ne sais plus ce que j'ai fait mais ça marche.

    Merci beaucoup

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

Discussions similaires

  1. [phpMyAdmin] Erreur lors du démarrage de la session
    Par iso9mix dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 15
    Dernier message: 22/02/2011, 19h36
  2. Erreur lors du démarrage de JBoss
    Par verbose dans le forum Wildfly/JBoss
    Réponses: 1
    Dernier message: 06/08/2008, 20h26
  3. Erreur lors du démarrage
    Par mortis dans le forum Installation
    Réponses: 3
    Dernier message: 31/05/2008, 17h00
  4. Erreur lors du démarrage de Tomcat depuis Eclipse
    Par Ghislain dans le forum Tomcat et TomEE
    Réponses: 20
    Dernier message: 17/01/2007, 09h50
  5. Erreur lors du démarrage du service
    Par Tux2B dans le forum Installation
    Réponses: 1
    Dernier message: 20/10/2005, 13h35

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