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 :

nullpointerexception dans ma servlet


Sujet :

Servlets/JSP Java

  1. #1
    Membre averti
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Par défaut nullpointerexception dans ma servlet
    Bon soir à tous et à toutes
    je débute avec hibernate, et je rencontre un grand pb lors de la connection à la base de donnée MySQL avec le servelet. J'utilise hibernate2 et voici le code de ma servlet:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    import com.hibernate.dao.*;
     
    import com.hibernate.dao.base.BaseUtilisateurDAO;
     
    import com.hibernate.service.*;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator; 
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.Session;
    import net.sf.hibernate.Transaction;
     
    /**
     * Servlet implementation class Application
     * @param <ServletConfig>
     */
    public class Application extends HttpServlet  {
    	 private static final long serialVersionUID = 1L;
    	 private ServletConfig config;
    	 Service service ;
    	 BaseUtilisateurDAO dao = null;
    	public Application() {
    		super();
    	}   	
     
     
    	public void init()
    	    throws ServletException{
    			ServletConfig config = getServletConfig();
     
    			try {
    				dao.init();
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			service.setDao(dao);
    	     }
     
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    	 throws IOException, ServletException {
    		try {
    			Session ses=HibernateUtil.currentSession();
     
    			Transaction tx =ses.beginTransaction();
     
    			doListPersonne(request, response,ses);
    		} catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	private void doListPersonne(HttpServletRequest request,
    			 HttpServletResponse response , Session s) throws ServletException, IOException, HibernateException {
     
     
    		try{Iterator<Utilisateur> it=service.getAll(s);
    		PrintWriter out =response.getWriter();
    		out.print("<table  border=\"1\">");
    		while(it.hasNext()){
    			Utilisateur e2 =(Utilisateur)it.next();
    			out.print("<tr><td>"+ e2.getNom()+"</td>"+"<td>"+ e2.getAge()+"</td></tr>" );
    	}
    		out.print("</table>");
    		}catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    	 throws IOException, ServletException {
    	 // on passe la main au GET
      }
    	}
    et ceci est la trace de l'exécution de la servlet:
    exception

    javax.servlet.ServletException: "Servlet.init()" pour la servlet Application a généré une exception
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    java.lang.Thread.run(Unknown Source)


    cause mère

    java.lang.NullPointerException
    Application.init(Application.java:58)
    javax.servlet.GenericServlet.init(GenericServlet.java:211)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    java.lang.Thread.run(Unknown Source)

    S'il vous plait aidez moi je suis complétement bloquée et ça fait longtemp que je cherche mais en vain
    Je serais trés reconnaissante
    Salem

  2. #2
    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
    ligne 58, vous essayez d'appeler une méthode sur un objet null. Vous avez probablement du oublier d'initialiser cet objet. Vu votre code, je parierais pour dao, auquel je ne vous vois nulle part attribuer une valeur.

  3. #3
    Membre averti
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Par défaut
    Merci pour votre attention
    l'erreur dans la méthode init() du servlet se produit au niveau de service.setDao(dao);
    Ci dessous le code de la classe dao (BaseUtilisateurDao) et spécialement de la méthode init() qui nous interesse:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public void init() throws Exception{
    		try {
    			Utilisateur p1 = Utilisateur(1, "MAROUA", 13);
    			save(p1);
     
    			 } catch (ParseException ex) {
    			 throw new Exception(
    			 "Erreur d'initialisation de la couche [dao] : "
    			 + ex.toString());
    			 }
    	}
    et ceci le code de ma classe service:
    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
    39
    40
    41
    42
    43
    44
    45
    46
    package com.hibernate.service;
    import java.util.Iterator;
     
    import java.util.List;
     
    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.Session;
     
    import com.hibernate.dao.Utilisateur;
     
    import com.hibernate.dao.*;
    import com.hibernate.dao.base.BaseUtilisateurDAO;
     
     
     
    public class Service implements IService {
    	private BaseUtilisateurDAO dao=null;
     
    	public BaseUtilisateurDAO getDao(){
    		return dao;
    	}
     
    	public void setDao(BaseUtilisateurDAO dao) {
    		this.dao = dao;
    		 }
     
    	public Utilisateur getOne(int id) throws HibernateException {
    		 return dao.getOne(id);
    		 }
     
     
    		 public void saveOne(Utilisateur utilisateur) throws HibernateException {
    		dao.saveOrUpdate(utilisateur);
    	 }
     
    		 public Iterator <Utilisateur> getAll(Session s) throws HibernateException{
    			 return dao.getAll(s);
     
    		 }
     
     
    		 public void deleteOne(int id) throws HibernateException 
    		 {Utilisateur aux= (Utilisateur)getOne(id);
    		 dao.delete(aux);
    		 }
    }
    Vous voyer que j'ai déjà instancié une instance Dao mais le pb persiste encore
    je sais pas quoi faire s'il vous plait aidez moi
    Merci

  4. #4
    Membre averti
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Par défaut
    Bonsoir,
    Maintenant et aprés des modifications (j'ai enlevé la méthode init() de la servlet Application et j'ai modifié le code de la méthode doGet et ceci pour simplifier de plus le code en enlévant l'interaction avec la couche dao car je pense qu'ici réside le probléme
    voici le vouveau code de ma servlet
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    import com.hibernate.dao.*;
    import com.hibernate.dao.base.BaseUtilisateurDAO;
     
    import com.hibernate.service.*;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.Iterator; 
    import javax.servlet.ServletConfig;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import net.sf.hibernate.HibernateException;
    import net.sf.hibernate.Session;
    import net.sf.hibernate.Transaction;
     
    /**
     * Servlet implementation class Application
     * @param <ServletConfig>
     */
    public class Application extends HttpServlet  {
    	 private static final long serialVersionUID = 1L;
    	 private ServletConfig config;
    	 Service service ;
    	 BaseUtilisateurDAO dao = null;
    	public Application() {
    		super();
    	}   	
     
     
    /*	public void init()
    	    throws ServletException{
    			ServletConfig config = getServletConfig();
     
    			try {
    				dao.init();
    			} catch (Exception e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    			service.setDao(dao);
    	     }
    		 */
     
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    	 throws IOException, ServletException {
    		try {
    			Session ses=HibernateUtil.currentSession();
     
    			Transaction tx =ses.beginTransaction();
    			Utilisateur u=new Utilisateur();
    			u.setAge(25);
    			u.setNom("Maroua");
    			u.setId(23);
    			ses.save(u);
    			tx.commit();
    			HibernateUtil.closeSession();
     
    			//doListPersonne(request, response,ses);
    		} catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
    	private void doListPersonne(HttpServletRequest request,
    			 HttpServletResponse response , Session s) throws ServletException, IOException, HibernateException {
     
     
    		try{Iterator<Utilisateur> it=service.getAll(s);
    		PrintWriter out =response.getWriter();
    		out.print("<table  border=\"1\">");
    		while(it.hasNext()){
    			Utilisateur e2 =(Utilisateur)it.next();
    			out.print("<tr><td>"+ e2.getNom()+"</td>"+"<td>"+ e2.getAge()+"</td></tr>" );
    	}
    		out.print("</table>");
    		}catch (HibernateException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    	}
     
     
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    	 throws IOException, ServletException {
    	 // on passe la main au GET
      }
    	}
    mais voici la trace d'erreur que je reçoit:
    message

    description Le serveur a rencontré une erreur interne () qui l'a empêché de satisfaire la requête.

    exception

    javax.servlet.ServletException: L'exécution de la servlet a lancé une exception


    cause mère

    java.lang.NoClassDefFoundError: org/dom4j/Attribute
    com.hibernate.dao.HibernateUtil.<clinit>(HibernateUtil.java:14)
    Application.doGet(Application.java:48)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:689)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

    Malgré que j'ai dans /lib le jar dom4j-1.4.jar ainsi que hibernate2.jar
    Je ne trouve pas d'ou vient le probléme
    Ya t'il une personne possédant une idée?
    Merci pour votre atteniton

  5. #5
    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
    Y a-t-il, d'abord, une raison particulière d'utiliser hibernate 2 et non pas 3 ? Ces deux versions sont fondamentalement différentes.

    Ensuite, aves vous bien mis dom4j1-4.jar dans votre WEB-INF/lib ?

  6. #6
    Membre averti
    Inscrit en
    Février 2011
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 15
    Par défaut
    Merci vous avez raison j'ai mis le .jar dans /lib et non pas dans /web-inf/lib mais je confronte un autre probléme au niveau de

    Session ses=HibernateUtil.currentSession(); dans la méthode doGet()

    voici le code de la classe HibernateUtil:
    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
    package com.hibernate.dao;
    import org.dom4j.Attribute;
     
    import net.sf.hibernate.*;
     
    import net.sf.hibernate.cfg.*;
     
    public class HibernateUtil {
    	private static final SessionFactory sessionFactory;
    	static {
    	try {
    	// Crée la SessionFactory
    	sessionFactory =
    	new Configuration().configure().buildSessionFactory();
    	} catch (HibernateException ex) {
    	throw new RuntimeException("Problème de configuration : "
    	+ ex.getMessage(), ex);
    	}}
    	public static final ThreadLocal session = new ThreadLocal();
    	public static Session currentSession()
    	throws HibernateException {
    	Session s = (Session) session.get();
    	// Ouvre une nouvelle Session, si ce Thread n'en a aucune
    	if (s == null) {
    	s = sessionFactory.openSession();
    	session.set(s);
    	}
    	return s;
    	}
    	public static void closeSession()
    	throws HibernateException {
    	Session s = (Session) session.get();
    	session.set(null);
    	if (s != null)
    		s.close();
    		}
     
    }
    Avez vous une idée?
    Pensez vous que ça sera util d'utiliser hibernate3 au lieu de hibernate2?
    Je vous remercie encore une fois

  7. #7
    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
    la question c'est plutot pourquoi utilise cette vieillerie d'hibernate 2?

    Quand à votre dernier problème, si vous ne dites pas ce que c'est comme problème, et étant donné que ma boule de cristal est en révision, je ne peux pas vous aider.

Discussions similaires

  1. NullPointerException dans une servlet utilisant un bean
    Par Dave62 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 27/12/2010, 19h53
  2. [applet]utilser des infos pour les traiter dans une servlet
    Par jeromejanson dans le forum Applets
    Réponses: 5
    Dernier message: 07/03/2010, 23h22
  3. [Session]Récupération d'une session dans une servlet
    Par frizby dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 18/11/2005, 17h02
  4. [débutante]Probleme de liens image dans JSP/Servlet
    Par celine31 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 24/11/2004, 15h51
  5. [Servlet][Compilation] Erreur de compil dans code servlet
    Par gandalf_le_blanc dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 13/05/2004, 10h17

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