Bonjour
J'ai créé une application web avec une page inscription.jsp qui permet d'enregistrer les info d'un étudiant dans la base de données.Mais quand je clique sur le bouton enregistrer j'ai le message d'erreur suivant:
Initializing Mojarra (1.2_13-b01-FCS) for context ''
WebModule[/Tasmania-war]StandardWrapper.Throwable
java.lang.RuntimeException: WEB5002: Exception in handleBeforeEvent.
at com.sun.web.server.J2EEInstanceListener.handleBeforeEvent(J2EEInstanceListener.java:263)
at com.sun.web.server.J2EEInstanceListener.instanceEvent(J2EEInstanceListener.java:119)
at org.apache.catalina.util.InstanceSupport.fireInstanceEvent(InstanceSupport.java:347)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:848)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref tasmania.Inscription/gu@jndi: tasmania.session.GestionUser@null@ta...session.GestionUser@Session@null into class tasmania.Inscription
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:387)
at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:206)
at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:117)
at com.sun.web.server.J2EEInstanceListener.handleBeforeEvent(J2EEInstanceListener.java:259)
... 30 more
Caused by: javax.naming.NameNotFoundException: tasmania.session.GestionUser#tasmania.session.GestionUser not found
at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:409)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:948)
at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:407)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:287)
... 33 more
StandardWrapperValve[Inscription]: PWC1382: Allocate exception for servlet Inscription
java.lang.RuntimeException: WEB5002: Exception in handleBeforeEvent.
at com.sun.web.server.J2EEInstanceListener.handleBeforeEvent(J2EEInstanceListener.java:263)
at com.sun.web.server.J2EEInstanceListener.instanceEvent(J2EEInstanceListener.java:119)
at org.apache.catalina.util.InstanceSupport.fireInstanceEvent(InstanceSupport.java:347)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1085)
at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:848)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:287)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:218)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
at com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:98)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:166)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:666)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:597)
at com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(DefaultProcessorTask.java:872)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTask(DefaultReadTask.java:341)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:263)
at com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadTask.java:214)
at com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
at com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerThread.java:106)
Caused by: com.sun.enterprise.InjectionException: Exception attempting to inject Unresolved Ejb-Ref tasmania.Inscription/gu@jndi: tasmania.session.GestionUser@null@ta...session.GestionUser@Session@null into class tasmania.Inscription
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:387)
at com.sun.enterprise.util.InjectionManagerImpl.inject(InjectionManagerImpl.java:206)
at com.sun.enterprise.util.InjectionManagerImpl.injectInstance(InjectionManagerImpl.java:117)
at com.sun.web.server.J2EEInstanceListener.handleBeforeEvent(J2EEInstanceListener.java:259)
... 30 more
Caused by: javax.naming.NameNotFoundException: tasmania.session.GestionUser#tasmania.session.GestionUser not found
at com.sun.enterprise.naming.TransientContext.doLookup(TransientContext.java:216)
at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:188)
at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:409)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.naming.NamingManagerImpl.lookup(NamingManagerImpl.java:948)
at com.sun.enterprise.naming.java.javaURLContext.lookup(javaURLContext.java:173)
at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:407)
at javax.naming.InitialContext.lookup(InitialContext.java:392)
at com.sun.enterprise.util.InjectionManagerImpl._inject(InjectionManagerImpl.java:287)
... 33 more
Le prolème provient apparemment de la référence JNDI.Je l'ai pourtant bien configuré et je l'ai même supprimée pour ensuite le recréer,mais toujours rien.
Voici ma servlet qui récupère les données au niveau du formulaire:
Voici mon interface:
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tasmania; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.ejb.*; import tasmania.session.GestionUser; import tasmania.entity.User; /* * * @author Mo */ public class Inscription extends HttpServlet { @EJB private GestionUser gu; /** * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { /* TODO output your page here out.println("<html>"); out.println("<head>"); out.println("<title>Servlet NouvelleInsertion</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Servlet NouvelleInsertion at " + request.getContextPath () + "</h1>"); out.println("</body>"); out.println("</html>"); */ } finally { out.close(); } } // <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code."> /** * Handles the HTTP <code>GET</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //processRequest(request, response); doPost(request,response); } /** * Handles the HTTP <code>POST</code> method. * @param request servlet request * @param response servlet response * @throws ServletException if a servlet-specific error occurs * @throws IOException if an I/O error occurs */ @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // processRequest(request, response); // String id = request.getParameter("id"); String nom = request.getParameter("nom"); String prenom = request.getParameter("prenom"); String adresse = request.getParameter("adresse"); String email = request.getParameter("email"); String telephone = request.getParameter("telephone"); String sexe = request.getParameter("sexe"); String login = request.getParameter("login"); String password = request.getParameter("password"); response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); String result = gu.insererUser(nom, prenom, adresse, email, Integer.parseInt(telephone), sexe, 2, login, password); if(result.equals("success")) { System.out.println("Informations Enregistrées avec success"); } else {System.out.println("Erreur insertion des données");} } /** * Returns a short description of the servlet. * @return a String containing servlet description */ @Override public String getServletInfo() { return "Short description"; }// </editor-fold> }
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 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tasmania.session; import javax.ejb.Remote; import tasmania.entity.User; /** * * @author Mo */ @Remote public interface GestionUser { public String insererUser(String nom,String prenom,String adresse,String email,int telephone,String sexe,int fonction,String login,String password); public User rechercherUser(int id); }
Voici mon bean session:
Voici mon bean entité:
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 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tasmania.session; import javax.ejb.Stateful; import tasmania.entity.User; import javax.persistence.*; /** * * @author Mo */ @Stateful public class BeanGestionUser implements GestionUser { // Add business logic below. (Right-click in editor and choose // "Insert Code > Add Business Method") @PersistenceContext(unitName="persTasmania") EntityManager em; public String insererUser(String nom,String prenom,String adresse,String email,int telephone,String sexe,int fonction,String login,String password) { User e1 = new User(); e1.setNom(nom); e1.setPrenom(prenom); e1.setAdresse(adresse); e1.setEmail(email); e1.setTelephone(telephone); e1.setSexe(sexe); e1.setFonction(fonction); e1.setLogin(login); e1.setPassword(password); try { em.persist(e1); return "success"; } catch(Exception e){ System.out.println(""+e.getMessage()); return "echec";} } public User rechercherUser(int id) { return (User)(em.find(User.class, id)); } }
Voici mon persistence.xml:
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153 /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package tasmania.entity; import java.io.Serializable; import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; /** * * @author Mo */ @Entity @Table(name="user") public class User implements Serializable { private static final long serialVersionUID = 1L; @Id @GeneratedValue(strategy = GenerationType.AUTO) private int id; private String nom; private String prenom; private String adresse; private String email; private int telephone; private String sexe; private int fonction; private String login; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public int hashCode() { int hash = 0; hash += (int) id; return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof User)) { return false; } User other = (User) object; if (this.id != other.id) { return false; } return true; } public void setNom(String nom) { this.nom = nom; } public void setPrenom(String prenom) { this.prenom = prenom; } public void setAdresse(String adresse) { this.adresse = adresse; } public void setEmail(String email) { this.email = email; } public void setTelephone(int telephone) { this.telephone = telephone; } public void setSexe(String sexe) { this.sexe = sexe; } public void setFonction(int fonction) { this.fonction = fonction; } public void setLogin(String login) { this.login = login; } public void setPassword(String password) { this.password = password; } public String getNom() { return nom; } public String getPrenom() { return prenom; } public String getAdresse() { return adresse; } public String getEmail() { return email; } public int getTelephone() { return telephone; } public String getSexe() { return sexe; } public int getFonction() { return fonction; } public String getLogin() { return login; } public String getPassword() { return password; } public static long getSerialVersionUID() { return serialVersionUID; } @Override public String toString() { return "tasmania.entity.User[id=" + id + "]"; } }
J'ai vérifié mon pool de connexion et la référence jndi,tout est normal.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 <?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="persTasmania" transaction-type="JTA"> <jta-data-source>jdbc/tasmaniaPool</jta-data-source> <properties/> </persistence-unit> </persistence>
Merci![]()
Partager