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 :

Probleme service web :accès à une base de données


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 174
    Points : 140
    Points
    140
    Par défaut Probleme service web :accès à une base de données
    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 :

    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);
    	}
     
    }
    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
    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 &quot;&quot;
     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.

  2. #2
    Membre éprouvé Avatar de Jidefix
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    742
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations forums :
    Inscription : Septembre 2006
    Messages : 742
    Points : 1 154
    Points
    1 154
    Par défaut
    Bonjour,
    cette erreur semble générée par le fait que ton constructeur n'est pas déclaré "public"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public class bdd {
     
    	//blablabla
    	public bdd(){
    En règle générale ta classe bdd devrait plus respecter les règles de base des développements java:
    - nom de la classe commence par une majuscule
    - nom des méthodes commence par une minuscule (sauf bien sur le constructeur)
    - gestion plus fine des droits d'accès via des accesseurs (public private etc.)

    Ce n'est pas obligatoire ni forcément justifié techniquement mais d'une, ça te force à comprendre les mécanismes, et de deux, beaucoup de frameworks se basent sur ces normes de nommage.
    Veuillez agréer nos sentiments les plus distingués. Soyez assurés de notre entière collaboration, bien à vous pour toujours et à jamais dans l'unique but de servir l'espérance de votre satisfaction, dis bonjour à ton père et à ta mère, bonne pétanque, mets ton écharpe fais froid dehors.

  3. #3
    Membre habitué
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    174
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 174
    Points : 140
    Points
    140
    Par défaut
    bonsoir,

    merci pour ta réponse, t'avait raison mon problème était dans le méthode d'accès au constructeur quand j'ai ajouté public mon problème est réglé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. AIde pour la mise en accès web d'une base de donnée
    Par setchulainn dans le forum Débuter
    Réponses: 1
    Dernier message: 23/08/2013, 11h57
  2. Web service accès à une base de donnée de l'exterieur
    Par ranly dans le forum Administration
    Réponses: 1
    Dernier message: 16/10/2012, 09h16
  3. [C#] Accés à une base de données AS400
    Par Green Hornet dans le forum Accès aux données
    Réponses: 8
    Dernier message: 14/11/2011, 11h26
  4. probleme d'accée à une base de données
    Par marocdivers dans le forum Accès aux données
    Réponses: 2
    Dernier message: 22/06/2011, 17h45
  5. Réponses: 4
    Dernier message: 15/01/2005, 16h05

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