Servlets - Concurrencia en java y PostgreSql

 
Vista:
sin imagen de perfil

Concurrencia en java y PostgreSql

Publicado por Alfonso (1 intervención) el 27/11/2011 13:13:36
Hola ,

Tengo un problema de concurrencia. estoy creando una pagina web, mas bien una aplicacion web , a traves de Jsp y servlet.

He creado un servlet , que cada vez que es ejecutado, llama a una función que actualiza una tabla en mi base de datos PostgresSql.

Pongo el codigo aquí:

miServlet
.
.
JdbcMovimientosDao.actualizaMovimiento(fecha,estado);//aqui llama a actualizar
.
.

//fin del servlet

Y aqui la funcion actualizaMovimiento(estado):


public static boolean actualizaMovimiento(Timestamp id, String estado) {

Connection conn = null;
PreparedStatement pStm = null;
ResultSet rs = null;
int filasactualizadas=0;
boolean retorna =false;
try {
conn = DriverManager.getConnection(Constantes.conexion,Constantes.usuario,Constantes.pass);
conn.setAutoCommit(false);

String update = "update mercado.movimientos set estado = ? where fechamodif = ?";
pStm = conn.prepareStatement(update);
pStm.setString(1, estado);
pStm.setTimestamp(2, id);
if((filasactualizadas = pStm.executeUpdate())>0)
retorna=true;

pStm.close(); pStm = null;rs = null;
conn.commit(); conn.close(); conn = null;

} catch(Throwable t) {
logger.error("Error: " + t.getMessage().toString());
try {
if(pStm != null) pStm.close();
if(conn != null) {
conn.rollback();
conn.close();
}
return false;
} catch(SQLException sqle) { }
}
return retorna;
}

//final de la funcion


¿Como puedo hacer que se llame a esta función de manera concurrente, o sea que sea actualize la tabla mercado.movimientos, si es llamada desde varias sesiones diferentes a la vez, y esto no cause error en alguna de las actualizaciones?

Muchas gracias de antemano

Alfonso
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder