Bonsoir,
j'ai crée une application web pour manipulation (création,modification, suppression) d'une table personne qui existe sur une base de données et qui s' affiche dans une JSP.
quand j'ai crée une classe pour accéder au base de données en utilisant l'api JDBC mon application tourne normal, mais dès que j'ai converti cette classe en service web j'ai des problemes.
ma classe du service web :
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 public class bdd { Connection con = null; String sql; ResultSet resultatDest; Statement stmt; //CallableStatement cstmt; String[] res=new String[3]; String[][] Table = new String[3][250]; bdd(){ try { con = DriverManager.getConnection("jdbc:postgresql://localhost/demo","postgres","postgres"); stmt = con.createStatement(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void new_Personne(String Nom,String Prenom){ String sqlText="INSERT INTO personne (nom,prenom) VALUES ('"+Nom+"','"+Prenom+"');"; try { stmt.executeUpdate(sqlText); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String[][] tout_Personnes(){ sql="select * from personne order by id;"; int i=0; try { resultatDest =stmt.executeQuery(sql); while (resultatDest.next()) { Table[0][i]=String.valueOf(resultatDest.getInt(1)); Table[1][i]=resultatDest.getString(2); Table[2][i]=resultatDest.getString(3); i++; }; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Table; } public String[] Search_Personnes(int Id){ sql="select * from personne where id='"+Id+"';"; try { resultatDest =stmt.executeQuery(sql); while (resultatDest.next()) { res[0]=resultatDest.getString(2); res[1]=resultatDest.getString(3); }; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return res; } public void Update_personne(int Id,String Nom, String Prenom){ sql="update personne set nom='"+Nom+"' where id="+Id+";"; try { stmt.executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } sql="update personne set prenom='"+Prenom+"'where id="+Id+";"; try { stmt.executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void Delete_personne(int Id){ sql="Delete from personne where id="+Id+";"; try { stmt.executeUpdate(sql); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public int nblig(){ int i=0; sql="select * from personne;"; try { resultatDest =stmt.executeQuery(sql); while (resultatDest.next()) { i++; }; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return i; } }
ma classe Servlet :
une autre classe appelé par la servlet qui sert appeler le 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
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 /** * Servlet implementation class Servlet */ public class Servlet extends HttpServlet { private static final long serialVersionUID = 1L; @SuppressWarnings("unchecked") ArrayList []Table = new ArrayList[3]; bd bd=new bd(); int id; /** * @see HttpServlet#HttpServlet() */ public Servlet() { super(); // TODO Auto-generated constructor stub } void doInit(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{ Table=bd.tout_Personnes(); request.setAttribute("table", Table); request.setAttribute("urlAction", "main"); getServletContext().getRequestDispatcher("/formulaire.jsp").forward(request,response); } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub String method=request.getMethod().toLowerCase(); String action=request.getParameter("action"); if(action==null){ action="init"; } if(method.equals("get") && action.equals("init")){ // démarrage application doInit(request,response); return; } if(method.equals("post") && action.equals("validation")){ // validation du formulaire de saisie // traitement selon le bouton qui a provoqué le POST // HttpSession session = request.getSession(true); getServletContext().getRequestDispatcher("/ajout.jsp").forward(request,response); } if(method.equals("post") && action.equals("ajout")){ String bouton = request.getParameter("bouton").toLowerCase(); if("effacer".equals(bouton)){ //HttpSession session = request.getSession(true); //session.setAttribute("nom", ""); //session.setAttribute("prenom", ""); // on affiche le formulaire getServletContext().getRequestDispatcher("/ajout.jsp").forward(request, response); return; }if("envoyer".equals(bouton)){ // validation du formulaire de saisie String nom=request.getParameter("nom"); String prenom=request.getParameter("prenom"); bd.new_Personne(nom, prenom); Table[0].clear(); Table[1].clear(); Table[2].clear(); doInit(request,response); return; } } if(method.equals("post") && action.equals("modif")){ String bouton = request.getParameter("bouton").toLowerCase(); if("effacer".equals(bouton)){ HttpSession session = request.getSession(true); session.setAttribute("nom", " "); session.setAttribute("prenom", " "); // on affiche le formulaire getServletContext().getRequestDispatcher("/modif.jsp").forward(request, response); return; }if("envoyer".equals(bouton)){ // validation du formulaire de saisie String nom=request.getParameter("nom"); String prenom=request.getParameter("prenom"); bd.Update_personne(id,nom, prenom); Table[0].clear(); Table[1].clear(); Table[2].clear(); doInit(request,response); return; } }if(method.equals("get") && action.equals("retourFormulaire")){ Table[0].clear(); Table[1].clear(); doInit(request,response); }if(method.equals("get") && action.equals("modifier")){ id = Integer.parseInt(request.getParameter("id")); String[] res=new String[3]; res=bd.Search_Personnes(id); request.setAttribute("nom", res[0]); request.setAttribute("prenom", res[1]); request.setAttribute("urlAction", "main"); getServletContext().getRequestDispatcher("/modif.jsp").forward(request, response); return; }if(method.equals("get") && action.equals("supprimer")){ id = Integer.parseInt(request.getParameter("id")); bd.Delete_personne(id); Table[0].clear(); Table[1].clear(); Table[2].clear(); doInit(request,response); } //doInit(request,response); } /** * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) */ protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // TODO Auto-generated method stub doGet(request,response); } }
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 package com.bd.servlet; import java.rmi.RemoteException; import java.util.ArrayList; import javax.xml.rpc.ServiceException; import localhost.axis.services.bddService.Bdd; import localhost.axis.services.bddService.BddService; import localhost.axis.services.bddService.BddServiceLocator; public class bd { Bdd port; @SuppressWarnings("unchecked") ArrayList[]Table = new ArrayList[3]; String[] res=new String[3]; String[][] res2=new String[3][250]; @SuppressWarnings("unchecked") bd(){ BddService service=new BddServiceLocator(); try { port=service.getbddService(); for(int i=0;i<3;i++) Table[i]=new ArrayList(); } catch (ServiceException e) { e.printStackTrace(); } } @SuppressWarnings("unchecked") public ArrayList[] tout_Personnes() { try { res2=port.tout_Personnes(); int s=port.nblig(); for(int i=0;i<s;i++){ Table[0].add(res2[0][i]); Table[1].add(res2[1][i]); } } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } return Table; } public void new_Personne(String nom, String prenom) { try { port.new_Personne(nom, prenom); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void Update_personne(int id, String nom, String prenom) { try { port.update_personne(id, nom, prenom); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public String[] Search_Personnes(int id) { try { res=port.search_Personnes(id); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } return res; } public void Delete_personne(int id) { try { port.delete_personne(id); } catch (RemoteException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
et le code de ma page JSP est :
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 <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <%@ page import="java.util.ArrayList" %> <% // on récupère les données du modèle ArrayList[] Table = (ArrayList[])request.getAttribute("table"); String urlAction=(String)request.getAttribute("urlAction"); %> <html> <head> <title>Application Web Personne</title> </head> <body> <center> <h2>Table - Personne</h2> <hr> <form action="<%=urlAction%>" method="post"> <table width="750" align="center" border="1" cellpadding="2" cellspacing="2"> <tr> <td>Id </td> <td>Nom </td> <td>Prenom </td> <td> </td> </tr> <% for(int i=0;i<Table[0].size();i++){ out.println("<tr>"); out.println("<td>" +Table[0].get(i)+ "</td>"); out.println("<td>" +Table[1].get(i)+ "</td>"); out.println("<td>" +Table[2].get(i)+ "</td>"); out.println("<td> <a href='?action=modifier&id="+Table[0].get(i)+"'> Modifier </a> </td>"); out.println("<td> <a href='?action=supprimer&id="+Table[0].get(i)+"'> Supprimer </a> </td>"); out.println("</tr>"); } %> </table> <table> <tr> <td><input type="submit" value="Ajouter"></td> </tr> </table> <input type="hidden" name="action" value="validation"> </form> </center> </body> </html>
je peut meme pas appeler le service avec l'uri: http://localhost:8080/axis/services/monapplication et j'ai les exceptions suivantes :.
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 AxisFault faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException faultSubcode: faultString: java.lang.IllegalAccessException: Class org.apache.axis.providers.java.JavaProvider can not access a member of class bdd with modifiers "" faultActor: faultNode: faultDetail: {http://xml.apache.org/axis/}hostname:mohamed-f223e5e java.lang.IllegalAccessException: Class org.apache.axis.providers.java.JavaProvider can not access a member of class bdd with modifiers "" at org.apache.axis.message.SOAPFaultBuilder.createFault(SOAPFaultBuilder.java:222) at org.apache.axis.message.SOAPFaultBuilder.endElement(SOAPFaultBuilder.java:129) at org.apache.axis.encoding.DeserializationContext.endElement(DeserializationContext.java:1087) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.endElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source) at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.axis.handlers.soap.MustUnderstandChecker.invoke(MustUnderstandChecker.java:62) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:206) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) at localhost.axis.services.bddService.BddServiceSoapBindingStub.tout_Personnes(BddServiceSoapBindingStub.java:241) at com.bd.servlet.bd.tout_Personnes(bd.java:33) at com.bd.servlet.Servlet.doInit(Servlet.java:33) at com.bd.servlet.Servlet.doGet(Servlet.java:56) at javax.servlet.http.HttpServlet.service(HttpServlet.java:627) at javax.servlet.http.HttpServlet.service(HttpServlet.java:729) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:875) at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665) at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528) at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689) at java.lang.Thread.run(Unknown Source)
je vous remercie de lire mon très long sujet et de me répondre.
Partager