Bonjour,
Je suis en train de developper une application java J2EE sous tomcat et j'ai une erreur concernant le driver postgres :
Exception sur l'accès à la BDD org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot create JDBC driver of class '' for connect URL 'null'
En cherchant sur le net et sur le forum, j'ai vu beaucoup de post a ce sujet mais etant novice dans le J2EE, j'ai du mal a bien saisir les differentes reponses et solutions.
C'est pourquoi je me permet de poster mes differents fichiers dans l'espoir que quelqu'un puisse y repondre.
voici mon server.xml (tomcat/conf)
web.xml (WEB-INF)
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 <?xml version="1.0" encoding="UTF-8" ?> - <Server> <Listener className="org.apache.catalina.core.AprLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" /> <Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" /> <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" /> - <GlobalNamingResources> <Environment name="simpleValue" type="java.lang.Integer" value="30" /> <Resource name="jdbc/postgres" type="javax.sql.DataSource" maxActive="4" maxIdle="2" username="name" maxWait="5000" driverClassName="postgresql-8.3dev-600.jdbc3" password="pass" url="jdbc:postgresql://194.254.140.222:5432/mabase" /> <Resource auth="Container" description="User database that can be updated and saved" name="UserDatabase" type="org.apache.catalina.UserDatabase" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" /> </GlobalNamingResources> - <Service name="Catalina"> <Connector port="8080" redirectPort="8443" minSpareThreads="25" connectionTimeout="20000" maxThreads="150" maxSpareThreads="75" /> <Connector port="8009" redirectPort="8443" protocol="AJP/1.3" /> - <Engine defaultHost="localhost" name="Catalina"> <Realm className="org.apache.catalina.realm.UserDatabaseRealm" /> <Host appBase="webapps" name="localhost" /> </Engine> </Service> </Server>
monappli.xml (tomcat\conf\Catalina\localhost)
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 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE web-app (View Source for full doctype...)> - <web-app> <display-name>essaibase</display-name> - <servlet> <servlet-name>base</servlet-name> <servlet-class>db.Connectiondb</servlet-class> </servlet> - <servlet-mapping> <servlet-name>base</servlet-name> <url-pattern>/connection</url-pattern> </servlet-mapping> - <resource-ref> <description>reference a la ressource BDD pour le pool</description> <res-ref-name>jdbc/postgres</res-ref-name> <res-type>javax.sql.DataSource</res-type> <res-auth>Container</res-auth> </resource-ref> </web-app>
et ma servlet (monapply/WEB-INF/classes/db/Connectiondb.java)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 <?xml version="1.0" encoding="UTF-8" ?> - <Context docBase="c:\monapply" reloadable="true" workDir="c:\monapply\work"> <Resource auth="Container" description="reference a la ressource BDD pour le pool" name="jdbc/postgres" type="javax.sql.DataSource" /> <Resource auth="Container" description="reference a la ressource BDD pour le pool" name="jdbc/postgres" type="javax.sql.DataSource" /> </Context>
L'erreur est generée ici : } catch (SQLException e) {
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 package db; import java.io.*; import java.sql.*; import javax.naming.*; import javax.servlet.*; import javax.servlet.http.*; import javax.sql.*; public class Connectiondb extends HttpServlet { private DataSource ds; //la source de données protected void doGet( HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head></head>"); out.println("<body>"); out.println("ok"); Connection con=null; Statement s=null; ResultSet rs=null; try { //récupération de la Connection depuis le DataSource con = ds.getConnection(); s = con.createStatement(); rs = s.executeQuery("SELECT * FROM seq_microsat"); while (rs.next()) { out.println(rs.getInt(2) + " "); out.println(rs.getString(3) + "<br/>"); } } catch (SQLException e) { response.sendError(500, "Exception sur l'accès à la BDD " + e); }finally { if (rs != null) { try { rs.close(); } catch (SQLException e) {} rs = null; } if (s != null) { try { s.close(); } catch (SQLException e) {} s = null; } if (con != null) { try { con.close(); } catch (SQLException e) {} con = null; } } out.println("</body>"); out.println("</html>"); out.close(); } public void init() throws ServletException { try { //récupération de la source de donnée Context initCtx = new InitialContext(); ds = (DataSource) initCtx.lookup("java:comp/env/jdbc/postgres"); } catch (Exception e) { throw new UnavailableException(e.getMessage()); } } }
response.sendError(500, "Exception sur l'accès à la BDD " + e);
quand j'entre dans le navigateur :
http://localhost:8080/monapply/connection
Je sais qu'il faut etre tres rigoureux sur les differents fichier xml, mais je ne voit vraiment pas ou est mon probleme.
Je precise tout de meme que j'utilise le driver postgresql : postgresql-8.3dev-600.jdbc3.jar
que dans tomcat\common\lib il y a les drivers :
commons-collections-3.2.jar
commons-collections-testframework-3.2.jar
commons-dbcp-1.2.2.jar
commons-el.jar
commons-pool-1.3.jar
+ les drivers de base
et aussi le driver postgresql
Je sais vraiment plus quoi faire, j'ai essayé 50 trucs differents tous ont été un echec
Si quelqu'un pouvait m'aider...
Merci par avance
Edenyorke
Partager