Cannot create JDBC driver of class '' for connect URL 'null'
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)
Code:
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> |
web.xml (WEB-INF)
Code:
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> |
monappli.xml (tomcat\conf\Catalina\localhost)
Code:
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> |
et ma servlet (monapply/WEB-INF/classes/db/Connectiondb.java)
Code:
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());
}
}
} |
L'erreur est generée ici : } catch (SQLException e) {
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
Connot create JDBC driver of class
J'ai la même erreur que toi et j'ai corrigé avec ta solution mais j'ai toujours l'erreur et comme je suis débutante sur les technologies comme hibernate/Spring/J2EE, j'aurai bien besoin de votre aide!!
MERCI