Salve ragazzi,
avrei un semplice quesito da porvi che mi sta però facendo impazzire.
Ho realizzato un'applicazione web in jsf, l'utente inserisce attraverso 6 pagine di form numerosi dati che vengono raccolti in un numero variabile di prepared statements e memorizzati in un arraylist di prepared statements.
Quando l'utente termina le operazioni,e solo alla fine, viene invocato il metodo executeTransaction che scorre l'arraylist ed esegue gli statement, effettuando commit o rollback di conseguenza. Il problema è che non riesco a far funzionare la transazione!Se metto o ometto il commit o il rollback non cambia niente!
Cmq se viene lanciata una sql exception l'inserimento avviene in maniera parziale !!!
Qualcuno può aiutarmi?
Uso la libreria mysql-connector-java-3.1.13 e tabelle innodb. Devo fare qualche altra cosa per usare le transazioni?
Ecco il mio metodo, vi prego aiutatemi,non so più cosa fare....
codice:
public String executeTransaction() throws java.sql.SQLException {
		java.sql.Connection conn = null;
		javax.sql.DataSource dataSource = Singleton.getInstance()
				.getDataSource();
		conn = dataSource.getConnection();

		Experiment exp = (Experiment) ViewUtils.eval("#{experiment}");

		List results = new ArrayList();
		ResultSet rs = null;
		Statement stmt = null;
		boolean allgood = false;
		if (conn != null) {

			conn.setAutoCommit(false);
			//you can change Transaction Isolation level 

			//conn.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_COMMITT_ED); 
			conn.setSavepoint();//set rollback point 

			try {
				for (int i = 0; i < exp.getExperiments().size(); i++) {

					((java.sql.PreparedStatement) exp.getExperiments().get(i))
							.executeUpdate();
					if (i == (exp.getExperiments().size() - 1)) {
						conn.commit();
					}

				}
			} catch (Exception e) {
				conn.rollback();
				e.printStackTrace();
			}

		} else {
			System.out.println("connessione non disponibile");
		}

		return "submit";
	}
Grazie mille