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