Bonjour,
J'ai un soucis à savoir que je n'arrive pas à instancier ma servlet correctement !
Je cherche depuis un moment, j'ai trouvé la cause du problème mais je ne sais pas comment le résoudre.
En cherchant, je me suis aperçu que cela venait en fait de la gestion d'erreur, dans les méthodes (throws HibernateException / try,catch...).
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 GRAVE: Exception lors de l'allocation pour la servlet accueil java.lang.ClassNotFoundException: net.sf.hibernate.exception.NestableException at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) at java.lang.Class.getConstructor0(Class.java:2699) at java.lang.Class.newInstance0(Class.java:326) at java.lang.Class.newInstance(Class.java:308) at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1116) at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:809) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:129) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 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:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454) at java.lang.Thread.run(Thread.java:619)
Le code est organisé de la façon suivante :
Le JSP apel le SERVLET qui va instancier une méthode dans le BEAN_1. Le BEAN_1 hérite d'une méthode du BEAN_2, qui lui renvoie les élèments de la base de donnée mis en forme dans le BEAN_1. Ce tableau est renvoyé dans le servlets qui par une méthode FORWARD est censé le renvoyé dans la page JSP...
Ce n'est pas un soucis d'instance mais de gestion d'erreur. Chaque module fonctionne indépendament sans aucun problème. Je mets le code ci-dessous.
Auriez-vous une / des réponses à m'apporter et surtout comment résoudre ce problème ? Car j'avoue que je deviens "chèvre"....
D'avance merci
++
BEAN_2 :
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 public class database { (...) public List Ensemble_Commande() throws HibernateException { //Requete OK : 9H42 String Query = "SELECT" + " client_commande.IdClient, " + " client_commande.IdClientCommande, " + " client_commande.DateClientCommande, " + " client_commande.QuantiteClientCommande, " + " client_commande.PrixTotalClientCommande, " + " client_commande.DateReceptionClientCommande, " + " client_commande.DateAnnulationClientCommande, " + " client_mode_paiment.LibClientModePaiment" + " FROM " + " ClientCommande client_commande, " + " ClientModePaiment client_mode_paiment" + " WHERE " + " client_commande.IdClient= '" + this._id_Clients + "' AND " + " client_mode_paiment.IdClientModePaiment = client_commande.IdClientModePaiment"; this.OpenSession_Transaction(); System.out.println(Query); List q1 = session.createQuery(Query).list(); return q1; }
BEAN_1 :
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 public class Ensemble_Commande extends database { (...) public String[][] Retourne_Toutes_Commandes() throws HibernateException { Integer Cpt = 0; super.OpenSession_Transaction(); super.set_id_Clients(this._id_Clients); List q1 = (List) super.Ensemble_Commande(); Iterator q2 = q1.iterator(); String Informations[][] = new String[q1.size()][8] ; /* Parcourir l'ensemble des élèments afin des les stocker dans un tableau */ while(q2.hasNext()){ Object[] tuple = (Object[]) q2.next(); Integer IdentifiantClient = (Integer) tuple[0]; Integer IdentifiantCommande = (Integer) tuple[1]; Date Date_Commande = (Date) tuple[2]; Integer Quantite = (Integer) tuple[3]; BigDecimal Prix_Total = (BigDecimal) tuple[4]; Date Date_Reception = (Date) tuple[5]; Date Date_Annulation = (Date) tuple[6]; String Mode_Paiement = (String) tuple[7]; Informations [Cpt][0] = IdentifiantClient.toString(); Informations [Cpt][1] = IdentifiantCommande.toString(); Informations [Cpt][2] = Date_Commande.toString(); Informations [Cpt][3] = Quantite.toString(); Informations [Cpt][4] = Prix_Total.toString(); Informations [Cpt][5] = Date_Reception.toString(); Informations [Cpt][6] = Date_Annulation.toString(); Informations [Cpt][7] = Mode_Paiement.toString(); //System.out.println(Titre_Livre); Cpt++; } /* Renvoyer le tableau dans le servlet */ super.Commit_CloseSession(); return Informations; }
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 package servlets; import java.io.IOException; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import net.sf.hibernate.*; import Test.essai_servlets; import bean.commande.Ensemble_Commande; /** * Servlet implementation class accueil */ public class accueil extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public accueil() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub //Récupérer l'identifiant de l'utilisateur String ValeurListe = request.getParameter("Lst_Nom_Personne").toString(); //Créer la variable de session et y stocker l'identifiant de l'utilisateur HttpSession session = request.getSession(true); Integer IdUser = (Integer) session.getAttribute("Identifiant_Utilisateur"); if (IdUser != null){ IdUser = (Integer) session.getAttribute("MySessionVariable"); session.setAttribute("Identifiant_Utilisateur", IdUser); }else{ session.setAttribute("Identifiant_Utilisateur", IdUser); } //Récupérer les commandes et translater vers la pages Commande.JSP String Informations[][]; try { Informations = this.RecupererCommandeUser(); request.setAttribute("Commande", Informations); RequestDispatcher rd = request.getRequestDispatcher("/commande.jsp"); rd.forward(request, response); } catch (HibernateException e) { // TODO Auto-generated catch block e.printStackTrace(); } } private String[][] RecupererCommandeUser() throws HibernateException { Ensemble_Commande Commande = new Ensemble_Commande(); String Informations[][] = Commande.Retourne_Toutes_Commandes(); return Informations; } }
Partager