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
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 /* * 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 lexé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); } }
web.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 /* * 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 ny 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 ny 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 }
et dans server.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>
merci
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>
Partager