Bonjour,

voilà je dois développer un site web qui se connecte à une base de données Teradata.

J'ai donc testé la connexion à la base de données dans un projet Java simple et tout fonctionne avec ce code :

Code java : 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
89
90
91
92
93
94
95
package com.model;
import java.sql.*;
 
public class DBConnection {
 
	private Connection 	connection;
	private String login;
	private String password;
	private static DBConnection dbConnection = null;
 
	private String pilote = "com.teradata.jdbc.TeraDriver";
	private String url = ("jdbc:teradata://DEV");	
	private boolean isConnected = false;
 
/***
 * Constructeur de la classe , qui est privée afin de créer un singleton pour limiter le nombre de connexions
 * @param login
 * @param password
 */
	private DBConnection(String login, String password)
	{
        try
        { 
        	this.login = login;
        	this.password = password;
 
	Class.forName(pilote);
 
	System.out.println("Connecter sur " + url);
            this.connection = DriverManager.getConnection(url,login,password);
            System.out.println(login+ " connecté");
            this.isConnected = true;
            //stmt = conn.createStatement();
        }
        catch ( SQLException E)
        {
            //JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE);
 
           // System.out.println("probleme de connexion");
            E.printStackTrace();
        	this.isConnected = false;
        }
        catch ( ClassNotFoundException E)
        {
        	E.printStackTrace();
        	this.isConnected = false;
        }
 
 
	}
 
	public static synchronized DBConnection getInstance( String login, String password) {
		if(dbConnection == null)
		{	
			System.out.println("Instance créée");
			dbConnection = new DBConnection(login, password);
		}	
		return dbConnection;
 
	}
 
	/***
         * Ferme la connexion à la base de données
         */
	 public void Close() {
		 try {
			 if(!this.connection.isClosed()) {
				 this.connection.close();
				 System.out.println("Connexion fermée");
			 }
		} catch (Exception e) {
				e.printStackTrace();
		}
 
	 }
 
	public String getLogin() {
		return login;
	}
 
	public void setLogin(String login) {
		this.login = login;
	}
 
	public boolean isConnected() {
		return isConnected;
	}
 
	public void setConnected(boolean isConnected) {
		this.isConnected = isConnected;
	}
 
 
 
}

Et je me connecte comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
import com.model.DBConnection;
 
public class Launch {
 
	public static void main(String[] args) {
		DBConnection db = DBConnection.getInstance("test", "testpassword");
		db.Close();
 
 
	}
 
}
Ceci fonctionne très bien mais quand j'essaye d'utiliser ce code dans un projet Web dinamique j'ai l'erreur suivante :

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
java.lang.ClassNotFoundException: com.teradata.jdbc.TeraDriver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(Unknown Source)
	at java.lang.Class.forName0(Native Method)
	at java.lang.Class.forName(Unknown Source)
	at com.model.DBConnection.<init>(DBConnection.java:29)
	at com.model.DBConnection.getInstance(DBConnection.java:66)
	at com.servlet.ConnectionServlet.doPost(ConnectionServlet.java:27)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
	at java.lang.Thread.run(Unknown Source)
Alors que j'ai bien rajouté
- tdgssconfig.jar
- terajdbc4.jar
dans les librairies. Tout comme le projet Java...

Une idée ? parce que là c'est dément