Foros del Web » Programación para mayores de 30 ;) » Java »

executeBatch + Timeout

Estas en el tema de executeBatch + Timeout en el foro de Java en Foros del Web. Hola, Me han pasado un codigo para insertar en una bbdd un cvs, y lo hacen por bloques, el problema es que yo conozco las ...
  #1 (permalink)  
Antiguo 17/01/2011, 03:09
 
Fecha de Ingreso: septiembre-2010
Ubicación: Madrid
Mensajes: 2
Antigüedad: 13 años, 6 meses
Puntos: 0
executeBatch + Timeout

Hola,
Me han pasado un codigo para insertar en una bbdd un cvs, y lo hacen por bloques, el problema es que yo conozco las transacciones, y con transacciones si se poner timeout, pero con el executeBatch no tengo ni idea, puesto que si pongo una transacción que cubra executeBatch , este se ejecuta completamente, y no salta el timeout hasta que no ha terminado
he intentado poner st.setQueryTimeout(iTimeCens); y ps.setQueryTimeout(iTimeCens); pero termina el proceso normalmente y no salta ninguna excepción,
Me podeis ayudar por favor?
he estado buscado por webs y no he encontrado nada.

Un saludo y muchas gracias

public boolean main(File FICHERO) {
boolean bIsOk = true;

BufferedReader br = null;
FileReader fr = null;
PrintWriter fw = null;

long contError = 0;
long contLineasLeidas = 0;
long lineasCon = 0;
String linea = null;

long t1 = System.currentTimeMillis();
int iTimeCens;
readConfigProperties rP = new readConfigProperties();
iTimeCens = Integer.parseInt((String) rP.getPropertie("TIME_OUT_CENSO"));

try {

con = EvotoMngDDBB.getConnection();
con.setAutoCommit(false);


String sql = "insert into t_plantilla(nif,nombre,apellidos,plantilla,cargo,e mail,id_categoria) " +
"values(?,?,?,?,?,?,?)";
ps = con.prepareStatement(sql);
st = con.createStatement();

fr = new FileReader(FICHERO);
fw = new PrintWriter(new BufferedWriter(new FileWriter(FICHERO + ".error")));

br = new BufferedReader(fr);
linea = br.readLine();
do {
contLineasLeidas++;
try {
getBeanFromLinea(linea);
//setBeanToBD(bean);
setBeanToBDpsBatch(bean);
} catch (Exception e) {
fw.println(linea);
contError++;
}
linea = br.readLine();
} while (linea != null);
ps.executeBatch();
con.commit();
} catch (BatchUpdateException ex) {
System.out.println(ex.getLocalizedMessage());
try {
con.rollback();
bIsOk = false;
} catch (SQLException ee) {
System.out.println("No se ha podido hacer el rollback");
ee.printStackTrace();
}
int[] resultado = ex.getUpdateCounts();

} catch (Exception e) {
e.printStackTrace();
try {
con.rollback();
bIsOk = false;
} catch (SQLException ex) {
System.out.println("No se ha podido hacer el rollback");
ex.printStackTrace();
}
} finally {
try {
System.out.println("Lineas leidas:" + contLineasLeidas);
System.out.println("lineas error:" + contError);
System.out.println("Tiempo empleado:" + (System.currentTimeMillis() - t1));
br.close();
fr.close();
fw.close();
con.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return bIsOk;
}

Etiquetas: timeout
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:56.