Bonjour,
Je me lance dans le développement d'application java depuis peu. J'étais sous PHP avant, et pour me connecter à ma base de donnée, j'utilisais un singleton. Vu le fonctionnement des singletons en Java, j'ai pensé que cela pouvait poser problème.
J'ai trouvé sur ce même forum quelque chose qui évoquait DBCP que je trouvais plutôt pas mal dans le principe. Dans la pratique, j'ai quelques problèmes pour la mise en oeuvre. Je pensais avoir configuré correctement Tomcat, mais apparement, ce n'est pas le cas
Sur une page JSP, j'ai mis ce code (et l'import qui va bien) :
avec ma classe DataBase :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 <% out.println(DataBase.getConnection()); %>
Malheureusement quand je vais sur ma page de test, j'obtiens un joli "null".
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 package utils; import java.sql.Connection; import java.sql.SQLException; import javax.naming.Context; import javax.naming.InitialContext; import javax.naming.NamingException; import javax.sql.DataSource; public class DataBase { public static Connection getConnection(){ Context ctx = null; try { ctx = new InitialContext(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { return ((DataSource)ctx.lookup("java:comp/env/jdbc/Ysandra")).getConnection(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (NamingException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } }
J'ai mis la configuration de ma base de donnée dans META-INF/context.xml :
Et dans WEB-INF/web.xml j'ai ajouté ceci dans <web-app> :
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 <?xml version="1.0" encoding="UTF-8"?> <Context> <Resource name="jdbc/Ysandra" auth="Container" type="javax.sql.DataSource" /> <ResourceParams name="jdbc/Ysandra"> <parameter> <name>username</name> <value>root</value> </parameter> <parameter> <name>password</name> <value>lalala</value> </parameter> <parameter> <name>url</name> <value>jdbc:mysql://localhost:3306/ysandra_www?autoReconnext=true</value> </parameter> <parameter> <name>driverClassName</name> <value>org.gjt.mm.mysql.Driver</value> </parameter> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>maxActive</name> <value>20</value> </parameter> <parameter> <name>maxIdle</name> <value>3</value> </parameter> <parameter> <name>maxWait</name> <value>5000</value> </parameter> </ResourceParams> </Context>
Est-ce que j'aurais mal compris une étape de la configuration ? Est-ce que l'idée de la classe avec une méthode statique est mauvaise et pourquoi ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <resource-ref> <description>Connexion MySQL</description> <res-ref-name>jdbc/Ysandra</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
Pour info, mon java -version (Mac OS X 10.5.6):
java version "1.6.0_07"
Java(TM) SE Runtime Environment (build 1.6.0_07-b06-153)
Java HotSpot(TM) 64-Bit Server VM (build 1.6.0_07-b06-57, mixed mode)
Je suis sous la dernière version de Tomcat 6.
Merci d'avance![]()
Partager