Salut,

dans mon appli web, j'ai une servlet de la forme 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
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
 
 
public class Test {
	private static final long serialVersionUID = 1L;
	private Map<String, Statement> tmpStatement = new HashMap<String, Statement>();
 
	public methode1()[	
		MaConnection bdd = new MaConnection();
 
		conn = bdd.getConnection();
		conn.setAutoCommit(false);
		stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
				ResultSet.CONCUR_UPDATABLE);
 
		req = "alter table T_ADM_SOURCE_SOUS_MENU disable constraint FK_ADM_SOURCE";
		stmt.executeUpdate(req);
 
		req = "delete from HDD_ADM_PROTO.T_ADM_V3401_REF_FLUX";	
		stmt.executeUpdate(req);
 
		...
 
		tmpStatement.put("monUser", stmt );
	}
 
 
	public commit(){
 
		PrintWriter out = response.getWriter();
		String message = "";
		try {
 
			tmpStatement.get("monUser").execute("commit");
			if (tmpStatement.containsKey("monUser") {
				tmpStatement.remove("monUser");
			}
 
			logger.info("commit ok");
		} catch (Exception e) {
			logger.error(
					"erreur lors du commit",
					e);
 
			message = "[[ERROR]]Une erreur est survenue au lancement des requêtes";
		}finally{
			out.println(message);
		}
	}
 
	public rollback(){
 
		PrintWriter out = response.getWriter();
		String message = "";
		try {
 
			tmpStatement.get("monUser").execute("rollback");
			if (tmpStatement.containsKey("monUser") {
				tmpStatement.remove("monUser");
			}
 
			logger.info("rollback ok");
		} catch (Exception e) {
			logger.error(
					"erreur lors du rollback",
					e);
 
			message = "[[ERROR]]Une erreur est survenue au lancement des requêtes";
		}finally{
			out.println(message);
		}
	}
 
 
}
au clic sur un premier bouton, maMethode1 est appelée, une fois finie, on affiche une popup avec "Ok" "Annuler" qui vont soit appeler ma méthode commit() soit rollback().


Le soucis, c'est que malgré le autoCommit(false), à la fin de "maMethode1()", toutes mes instructions sql sont deja commitées en BDD, et du coup, peu importe l'appel à commit() ou rollback() après


Y'a un truc que j'ai raté ?