Bonjour,

J'ai un projet qui consite à la gestion d'une base de donnée Oracle via un interface web. J'utilise le serveur d'application Jboss et je me connecte à la base de donnée via une DataSource.

Voici mon code de connexion :
Fichier InitDB (Servlet de connexion)
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
public void init(ServletConfig config) throws ServletException {
		super.init(config);
		try{
			Connection dbc = OracleConnexion.getConnection();
			System.out.println("dbc = "+dbc);
			if(dbc==null) {
				System.out.println("connexion impossible");
			}
			else {
				AdministratorDB.setConnection(dbc); //connection to the table Administrator
				System.out.println("connexion réussi");
			}
		}
		catch(Exception e){
			System.out.println("erreur lors du chargement de InitDB "+e);
		}
	}
Fichier OracleConnexion
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
public class OracleConnexion {
 
	protected static String username;
	protected static String password;
	protected static DataSource ds;
	protected static ArrayList<Connection> poolConnect = new ArrayList<Connection>();
 
	static {
		username = ApplicationProperties.getDatasourceUserId();
		password = ApplicationProperties.getDatasourcePassword();
		ds = getDataSource();
	}
 
	public static DataSource getDataSource() {
		try{
			InitialContext context = new InitialContext();
			ds = (DataSource)context.lookup(ApplicationProperties.getDatasourceJndiName());
			//recherche de l’objet DataSource dans l’annuaire JNDI
		} 
		catch (javax.naming.NamingException ne) {
			System.out.println("erreur de nom : "+ ne);
			ne.printStackTrace();
		}
		return ds;
	}
 
	public static Connection getConnection() {
		try {
			System.out.println("debut connexion");
			Connection dbc = ds.getConnection(username,password);
			System.out.println("connexion = "+dbc);
			poolConnect.add(dbc);
			return dbc;
		}
		catch(Exception e) {
			System.out.println("erreur de connexion "+e);
			e.printStackTrace();
			return null ;
		}
	}
D'après la console, je me connecte tres bien à la DB vu qu'elle m'affiche ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
16:33:32,959 INFO  [STDOUT] debut connexion
16:33:33,361 INFO  [STDOUT] connexion = org.jboss.resource.adapter.jdbc.WrappedConnection@c6a26b
16:33:33,362 INFO  [STDOUT] dbc = org.jboss.resource.adapter.jdbc.WrappedConnection@c6a26b
16:33:33,380 INFO  [STDOUT] connexion réussi
Le problème survient lorsque j'appelle la methode logAdmin qui va executer une bête requête
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
try{
			HttpSession session = request.getSession();
			String nickname = beanAdministratorForm.getNickname();
			String password = beanAdministratorForm.getPassword();
			int idAdmin = AdministratorDB.logAdmin(nickname, password);
			if( idAdmin != 0){
				session.setAttribute("id",""+idAdmin);
				forward = mapping.findForward("connectionsuccess");
			}
			else{
				System.out.println("erreur log, retour case départ !");
				errors.add("badlog", new ActionMessage("loging.badusernameandpassword"));
				forward = mapping.findForward("connectionfailed");
			}
 
		}
		catch (Exception e){
			e.printStackTrace();
			System.out.println("erreur de log : "+e);
		}
code de la méthode logAdmin
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
public static int logAdmin (String nickname, String password){
		erreur = null;
		int idAdmin = 0;
 
		try{
			String req = "select id_administrator from administrator where nickname = ? and password = ?";	
			PreparedStatement pstm = dbConnect.prepareStatement(req);
			System.out.println("requete = "+req);
			pstm.setString(1,nickname);
			pstm.setString(2,password);
			ResultSet rs = pstm.executeQuery();
    		if(rs.next()){
 
    			idAdmin = rs.getInt(1);
    		}
    		else {
    			idAdmin = 0;
    		}
    		pstm.close(); 
		}
 
		catch (Exception e){
			erreur = e;
			System.out.println("erreur de login : "+erreur);
		}
		return idAdmin;
	}
La console ne me sort aucune exception, juste les println que je reçois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
16:38:03,207 INFO  [STDOUT] erreur log, retour case départ !
Je rentre pourtant dans mes champs de ma jsp des données correctes qui se trouvent dans ma DBn donc je ne sais pas d'où pourrait venir le problème.
Merci d'avance pour ceux qui répondront.

Dasson

P.S. : Je ne sais pas si je devais mettre ce post dans le JDBC ou autre part (JBOSS ou Oracle ou Struts) donc désolé si je me suis trompé.