Bonjour,
je souhaite configurer un pool de connexion sous Tomcat 4.1. Lorsque je souhaite y acceder par un getConnection() j'obtiens le message d'erreur suivant :
Pour arriver à ce jolie bug, j'ai procédé comme ceci :org.apache.commons.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
Dans le webapps\monAppli\WEB-INF\web.xml :
Dans le webapps\monAppli\WEB-INF\server.xml :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <resource-ref> <description>Oracle Development Datasource</description> <res-ref-name>jdbc/bioMJ</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref>
Le tout encadré des balises <GlobalNamingResources>
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 <Resource auth="Container" description="CDP Datasource TMA" name="jdbc/bioMJ" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/bioMJ"> <parameter> <name>validationQuery</name> <value>select * from P_UTILISATEUR</value> </parameter> <parameter> <name>maxWait</name> <value>500</value> </parameter> <parameter> <name>maxActive</name> <value>4</value> </parameter> <parameter> <name>password</name> <value>CDPTMA</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@localhost:1520:xe</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>maxIdle</name> <value>0</value> </parameter> <parameter> <name>username</name> <value>CDPTMA</value> </parameter> </ResourceParams>
Et ensuite j'ai édité un fichier xml à la racine de webapps :
Et voila mon bout de code :
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 <!-- CDP Context --> <Context path="/cdpApp" docBase="/cdpApp" debug="1"> <Environment name="logName" value="C:\Program Files\Apache Software Foundation\Tomcat 4.1\webapps\cdpApp\log\traceCdp" type="java.lang.String" override="false" /> <Environment name="report/SGBDUsr" value="CDPTMA" override="false" type="java.lang.String"/> <Environment name="report/SGBDPwd" value="CDPTMA" override="false" type="java.lang.String"/> <Environment name="report/reportServerAddress" value="127.0.0.1" type="java.lang.String" override="false"/> <Environment name="printer/confFile" value="C:\Program Files\Apache Software Foundation\Tomcat 4.1\webapps\cdpApp\WEB-INF\PrinterConfig.properties" type="java.lang.String" override="false"/> <Environment name="fr.biomerieux.cdp.ClassPeriph.2.1" value="fr.biomerieux.cdp.bal.BalRmiTest" type="java.lang.String" override="false"/> <Environment name="fr.biomerieux.cdp.ClassPeriph.1.2" value="fr.biomerieux.cdp.bal.BalRmiTest" type="java.lang.String" override="false"/> <Environment name="fr.biomerieux.cdp.ClassPeriph.1.4" value="fr.biomerieux.cdp.bal.BalRmiTest" type="java.lang.String" override="false"/> <Environment name="fr.biomerieux.cdp.ClassPeriph.4.1" value="fr.biomerieux.cdp.bal.BalRmiTest" type="java.lang.String" override="false"/> <!-- cdp database --> <Resource auth="Container" description="CDP Datasource TMA" name="jdbc/bioMJ" scope="Shareable" type="javax.sql.DataSource"/> <ResourceParams name="jdbc/bioMJ"> <parameter> <name>factory</name> <value>org.apache.commons.dbcp.BasicDataSourceFactory</value> </parameter> <parameter> <name>validationQuery</name> <value>select * from P_UTILISATEUR</value> </parameter> <parameter> <name>maxWait</name> <value>1800</value> </parameter> <parameter> <name>maxActive</name> <value>10</value> </parameter> <parameter> <name>password</name> <value>CDPTMA</value> </parameter> <parameter> <name>url</name> <value>jdbc:oracle:thin:@127.0.0.1:1521:XE</value> </parameter> <parameter> <name>driverClassName</name> <value>oracle.jdbc.driver.OracleDriver</value> </parameter> <parameter> <name>maxIdle</name> <value>0</value> </parameter> <parameter> <name>username</name> <value>CDPTMA</value> </parameter> <parameter> <name>removeAbandoned</name> <value>true</value> </parameter> <parameter> <name>removeAbandonedTimeout</name> <value>600</value> </parameter> </ResourceParams> <Logger className="org.apache.catalina.logger.FileLogger" prefix="localhost_cdp_log." suffix=".txt" timestamp="true"/> </Context>
Sachant que la variable "_mPoolName" me retourne bien la valeur attendu, a savoir "bioMJ".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Context l_ctx = (Context) (new InitialContext()).lookup("java:comp/env"); _mPoolName = AbstractConnectionManager.nameSGBD; _mPoolConnections = (DataSource) l_ctx.lookup("jdbc/" + _mPoolName); Connection myConn = _mPoolConnections.getConnection();
je précise que je dispose de la version 10.2.0.1 d'oracle (de mémoire). j'ai donc copié le jar classes12.jar dans /common/lib de tomcat.
Etant donné que je ne connais pas trop le fonctionnement des pools de connexion, pouvez me renseigner d'ou pourrait provenir l'erreur ?
Merci d'avance !
Partager