Bonjour , quelqu'un peut m'aider , j'ai un probleme en testant ce servlet , j'ai beau chercher et voici l'erreur :
symbol : method getConnection()
location: interface javax.activation.DataSource
connection = ds.getConnection();

voici le 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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package betaboutique.servlets;
import betaboutique.boiteoutils.OutilsBaseDeDonnees;
import com.mysql.jdbc.Connection;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.activation.DataSource;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
/**
 *
 * @author sow
 */
public class ServletListeClientModele extends HttpServlet {
 
//--Variabe de la classe
    DataSource ds = null;
    Connection connection = null;
    PreparedStatement requete = null;
    ResultSet rs = null;
 
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
//récupérer la datasource du plug-in dans un attribut présent dans le contexte de la servlet
 
      //javax.sql.DataSource ds = (javax.sql.DataSource) getServletContext().getAttribute("datasource");
          ds = (DataSource)getServletContext().getAttribute("datasource");
        try {
            //ouvrir une connexion
            connection = ds.getConnection();       
//flux de sortie vers le navigateur
            PrintWriter out = response.getWriter();
//preparation de la requete
            requete = connection.prepareStatement(
                    "SELECT * FROM client ORDER BY client.id_client");
//executer la requete
            rs = requete.executeQuery();
//affichage
            while (rs.next()) {
                out.println("Client : " + rs.getInt("id_client") + "-" + rs.getString("nomclient") + "-" + rs.getString("prenomclient") + "-" + rs.getString("emailclient"));
            }
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("Erreur lors de l’exécution de la requete");
        } finally {
            OutilsBaseDeDonnees.fermerConnexion(rs);
            OutilsBaseDeDonnees.fermerConnexion(requete);
            OutilsBaseDeDonnees.fermerConnexion(connection);
            ds = null;
        }
 
    }
 
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        doGet(request, response);
    }
 
}
voici la classe initialisationcontexte
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
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package betaboutique.boiteoutils;
 
import javax.activation.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
 
/**
 *
 * @author sow
 */
public class InitialisationContext implements ServletContextListener {
 
    //action déclenchée lors du chargement du context
    @Override
    public void contextInitialized(ServletContextEvent event) {
 
        //initaliser le contexte
        Context initCtx = null;
        try {
 
            //initaliser le contexte
            initCtx = new InitialContext();
            if (initCtx == null) {
                throw new Exception("Il n’y a pas de contexte !");
            } else {
                System.out.println("Contexte chargé !");
            }
            //se connecter au JNDI
            Context envCtx = (Context) initCtx.lookup("java:comp/env");
            DataSource ds = (DataSource) envCtx.lookup("jdbc_betaboutiquemysql");
            if (ds == null) {
                throw new Exception("Il n’y a pas de DataSource !");
            } else {
                System.out.println("DataSource chargée !");
            }
            //stocker la DataSource dans un attribut nommé ’’datasource’’ du context
            ServletContext servletContext = event.getServletContext();
            servletContext.setAttribute("datasource", ds);
        } catch (Exception e) {
            System.out.println(e.getMessage());
        } finally {
            try {
//fermer le contexte
                if (initCtx != null) {
                    initCtx.close();
                    System.out.println("initCtx correctement déchargé !");
                }
            } catch (Exception e) {
                System.out.println("Erreur lors de initCtx !");
            }
        }
 
    }
//action qui permet de détruire le filtre
 
    @Override
    public void contextDestroyed(ServletContextEvent event) {
        System.out.println("----------- Context détruit -----------");
        try {
            //fermeture
System.out.println("DataSource fermée");
 
        } catch (Exception e) {
        }
        finally{
 
        }
 
 
    }
//fin de la classe
}
web.xml
Code xml : 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
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <listener>
        <listener-class>betaboutique.boiteoutils.InitialisationContext</listener-class>
    </listener>
    <servlet>
        <servlet-name>servletlisteclientmodele</servlet-name>
        <servlet-class>betaboutique.servlets.ServletListeClientModele</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletlisteclientmodele</servlet-name>
        <url-pattern>/listeclients</url-pattern>
    </servlet-mapping>
 
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc_betaboutiquemysql</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
</web-app>
et dans server.xml
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<Context path="/WebApp1TestConcept3" reloadable="true" 
             docBase="/home/xxx/yyyy/JavaJ2eeProject/WebApp1TestConcept3/build/web">
        <Resource name="jdbc_betaboutiquemysql" auth="Container" type="javax.sql.DataSource"
                  maxActive="20" maxIdle="10" validationQuery="SELECT 1" 
                  username="root" password="passersow" driverClassName="com.mysql.jdbc.Driver"
                  url="jdbc:mysql://localhost:3306/betaboutique"
        />
    </Context>
merci