EJB (Enterprise Java Beans) - Transacciones con acceso a dos bases de datos

 
Vista:

Transacciones con acceso a dos bases de datos

Publicado por eh carlos (1 intervención) el 30/12/2004 09:29:05
Hola a todos:

Tengo algunas dudas sobre la tecnología J2EE y los EJB:

1) Cómo puedo acceder a dos bases de datos en un mismo programa.
2) En el caso en el que se puedan acceder a dos bases de datos distintas, si un método realiza una insercción en dos tablas (una de cada base de datos), si la primera insercción la realiza ok y la segunda falla, ¿cómo hago para que la transacción haga rollback en las dos bases de datos?, ........

Por favor necesitaría que alguien me aclarase estas dudas, y me explicase un poco el tema de trabajar con dos bases de datos simultáneamente, cómo afectaría al módulo de EJBs etc......

Muchas gracias de antemano.
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

RE:Transacciones con acceso a dos bases de -parte1

Publicado por Ani Alamo (7 intervenciones) el 05/01/2005 21:41:47
A ver te explico algo que yo se, si quieres hacer tras una actualizacion en una bd1, una siguiente actualizacion en una bd2, lo mas optimo es que uses un programa SQL para hacerlo, no desde un ejb, ni un programa java, ni asp, sino desde mismo pl/sql de oracle, o transact sql de sql server, ya que cuando trabajas con un bean de entidad trabajas sobre una base de datos determinada, y una tabla especifica de ella. Mientras que si usas un bean de sesion y desde ahi mismo haces un update o insert o delete de una tabla o un conjunto de tablas, pero tienes que realizar una conexion por base de datos a traves del objeto connection.
Puedes hacer un ejb de sesion que invoque algo como esto:

Tienes un procedimiento almacenado en SQL Server .............................
CREATE PROC sp_update_system_table
@parm_SauceTypeID int
AS

BEGIN TRANSACTION
update China.dbo.tblSystemTableID set NextID = @parm_SauceTypeID + 1 where TableID = 11
update Australia.dbo.tblSystemTableID set NextID = @parm_SauceTypeID + 1 where TableID = 11
COMMIT TRANSACTION

................................


Y en tu clase java haces algo asi:

CallableStatement cstmt;

String strSQL = "sp_update_system_table " + SauceTypeID;
int SauceTypeID= 454;
cstmt = conn.prepareCall(strSQL,
ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_UPDATABLE);
cstmt.setString(1, MyParam);
cstmt.execute();

................................

Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Transacciones con acceso a dos bases de -parte1

Publicado por Jroldan (2 intervenciones) el 07/02/2005 21:02:43
Hola,

Por lo que leo, entiendo que te estas refiriendo a una TRANSACCION DISTRIBUIDA y lo puedes hacer en SISTEMAS DISTRIBIDOS utilizando el concepto de COMPONENTES DISTRIBUIDOS ó EJB.

La logica de la transacción iria en el EJB utilizando el objeto "TRANSACCTION" para manejar la transaccion en una o mas bases de datos, de esta manera podrias hacer commit o rollback utilizando siempre el objeto "TRANSACCTION".

Espero haberte dado una idea de como podria hacerlo.

Saludos,

Jroldan.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar