Home| New Wiki | | Login | User registry | Home Tree PDF
SQL, conexiones y excepciones
Owner:, Version: 9, Date:Tue 30, November 2004,

Debido a dudas que puedan tener envio esta micro definicion de como usar una base de datos cuando se usan transacciones de base de datos para hacer mas de una tarea.

  • Formas de uso de conexiones y try/catch.
  • Uso de transacciones entre Servlets y EJBs

1.- Formas de uso de conexiones y try/catch.

a) Forma general de un metodo que se conecta a una base de datos y hace algo:

public void doSomething() throws MyException {
  Connection c = getConnection()
  try{
    c.setAutocommit(false);
    doA(c);
    doB(c) ;
    c.commit;
  catch(exception e){
    c.rollback();
    throws new MyException("No se pudo hacer Something debido a:"+e.getMessage());
  }
}

b) Forma general de un metodo que se No se a una base de datos y hace algo (basicamente no administra las excepciones):

public void doSomething(Connection c) throws SQLException {
  doA(c);
  doB(c) ;
}

2.- Uso de transacciones entre Servlets y EJBs

Cuando se usan EJB, las funciones basicas no deben ser accedidas

remotamente, sino que deben generarse funciones publicas que hagan todo el trabajo.

PD: Un servlet que desee realizar varias tareas dentro de la misma

transaccion, solo puede llamar a 1 funcion de un EJB.

Normalmente el Servlet/Action NO debe atrapar, administrar las excepciones, sino que debe incluir throws XXXException en el encabezado de la funcion doTask():

Ejemplo:

EJB:

class MYEJB {
 public void doSomething() throws MyException { // funcion remota
  Connection c = getConnection()
   try{
    c.setAutocommit(false);
    doA(c);
    doB(c) ;
    c.commit;
   }catch(exception e){
    c.rollback();
    throw new MyException("No se pudo hacer Something debido a:"+e.getMessage());
   }
  }
 }

Servlet:

...
ejb.doSomething();  // ya se hizo commit automaticamente o se hizo rollback.
...
Connection c = getConnection()
try{
 c.setAutocommit(false);
 doA(c);
 doB(c) ;
 c.commit();
}catch(exception e){
 c.rollback();
 throws new MyException("No se pudo hacer Something debido a:"+e.getMessage());
}


Edit - History - Extract PDF - Extract Tree as PDF

Last Modified

Thu, Nov 19 Sat, Oct 3 Fri, Sep 25 Mon, Aug 3 Mon, Apr 27 Sat, Mar 28 Mon, Jan 19 Tue, Jan 6

Home| New Wiki