Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-1
Especialista en Aplicaciones y Servicios Web con Java Enterprise
Servicios Transaccionales
Sesión 1:Características básicas de las
transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-2
Índice
Introducción
Aplicaciones distribuidas
Carácterísticas básicas de las transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-3
Introducción
Aplicaciones distribuidos
Conceptos básicos de transacciones
Carácterísticas básicas de las transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-4
JTA vs. JDBC
JTA = Java Transaction API
Ventajas de JTA frente a las transacciones JDBCPosibilidad de gestionar transacciones distribuidasAPI usable con distintos tipos de recursos, no sólo bases de datos
En estas 2 sesiones vamos a verFundamentos básicos de la computación distribuida en JavaEjemplos de uso de JTA con bases de datos y colas de mensajes
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-5
Actores en una aplicación J2EE
Navegador web (Mozilla)Interfaz de usuario HTML/HTTP: presenta información y recoge peticiones del usuario
Cliente independiente (Programa Swing)Interfaz de usuario no HTML/HTTP
Contenedor web (Tomcat)Procesa servlets y páginas JSP
Contenedor EJB (jBoss)Numerosos servicios: JNDI, JMS, Seguridad, componentes EJB
SGBD/EISBases de datosAplicaciones heredadas
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-6
Escenarios de aplicación J2EE
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-7
Introducción
Aplicaciones distribuidos
Conceptos básicos de transacciones
Carácterísticas básicas de las transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-8
Modelos de programación distribuida
Dos modelos fundamentalesRPC (Remote Procedure Call)Paso de mensajes
En la plataforma J2EERMI (Remote Method Invocation)JMS (Java Message Service)
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-9
Llamada a procedimiento remoto
Modelo más sencillo
El cliente realiza una llamada a un procedimiento, pero éste no reside en la zona de memoria del proceso (heap), sino en otra zona
El cliente se queda a la espera de recibir la respuesta del servidor, que puede retrasarse por problemas en la red o por otros problemas
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-10
Desentrañando una llamada RPC
result = objetoServidor.metodoABC();
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-11
RPC en J2EE: RMI/IIOP
Elementos fundamentalesServicio de nombres: JNDI Cliente se comunica con IIOPInterfaz e implementación del servidor
Contextic = new InitialContext();Object objref= ic.lookup("Fax service");FaxServiceInterfacefaxService= (FaxServiceInterface) PortableRemoteObject.narrow(objref,
AccountManagerInterface.class);faxService.setFaxNumber("965903900");faxService.setText("Hola recuerda enviarme la factura!");faxService.setTextSize(32);
status = faxService.send();System.out.println("fax enviado con resultado:" + status);
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-12
Paso de mensajes
Los mensajes se envían a destinos
Procesos débilmente acoplados
Implementación en Java = JMS
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-13
Elementos JMS (Java Message Service)
Servidor de mensajería JMS
Clientes (emisores y receptores de mensajes)
Mensajes
Objetos administrados
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-14
Modalidad punto-a-punto
La comunicación entre clientes (emisores y receptores) se realiza a través de una cola
La cola se crea por el administrador JMS y se mantiene en el proveedor JMS
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-15
Código ejemplo: emisor
ContextjndiContext = new InitialContext();QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory");
Queue queue = (Queue) jndiContext.lookup(queueName);QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();QueueSession queueSession =
queueConnection.createQueueSession(false,Session.AUTO_ACKNOWLEDGE);
QueueSender queueSender = queueSession.createSender(queue);TextMessage message = queueSession.createTextMessage();for(inti = 0; i < NUM_MSGS; i++) {
message.setText("Thisis message " + (i + 1));System.out.println("Sending message: " + message.getText());queueSender.send(message);
}
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-16
Código ejemplo: receptor
ContextjndiContext= new InitialContext();QueueConnectionFactory queueConnectionFactory =
(QueueConnectionFactory)jndiContext.lookup("QueueConnectionFactory");
Queue queue = (Queue) jndiContext.lookup(queueName);QueueConnection queueConnection =
queueConnectionFactory.createQueueConnection();QueueSession queueSession = queueConnection.createQueueSession(
false, Session.AUTO_ACKNOWLEDGE);QueueReceiverqueueReceiver= queueSession.createReceiver(queue);queueConnection.start();while(true) {
Message m = queueReceiver.receive(10);if(m != null) {if(m instanceof TextMessage) {message = (TextMessage) m;System.out.println("Reading message: " +message.getText());
}}
}
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-17
Diagrama de creación de objetos
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-18
Introducción
Aplicaciones distribuidos
Conceptos básicos de transacciones
Carácterísticas básicas de las transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-19
Definición de transacción
Una transacción es un grupo de operaciones que representa una unidad de trabajo y que deben ejecutarse como tal unidad.
Las operaciones se realizan sobre recursos (como lectura, escritura o actualización) y transforman un estado consistente del sistema en un nuevo estado consistente.
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-20
Atomicidad: transferencia entre cuentas
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-21
Más carácterísticas (ACID)
ConsistenciaResponsabilidad del programador
Aislamiento (o seriabilidad)El resultado de la ejecución de un conjunto concurrente de transacciones debe ser equivalente a una ejecución en serie de las misma.Los datos que participan en una transacción deben quedar ocultos (aislados) hasta el commit.
Durabilidad
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-22
Demarcación de transacciones
try{userTran.begin();cliente.grabaPedido(pedido); tarjetaCredito= cliente.tarjetaCredito(); tarjetaCredito.carga(pedido.precio); almacen.descuenta(pedido); userTran.com mit();
}catch(Exception e} {userTran.rollback();
}
En la mayor parte de los modelos de gestión de transacciones, éstas no son declarativas, sino que se informan al gestor según se van ejecutando
Notación para marcar el comienzo y el final de las transacciones
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-23
Tipos de alcance
Transacciones encadenadasSe definen subtransaccionesSi una transacción termina con éxito no hace rollbackcuando la transacción padre falla
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-24
Transacciones y concurrencia: problemas
Supongamos las siguientes operaciones. Si se ejecutan concurrentemente 2 instancias es posible que X quede en un estado inconsistente.
1. Leer el dato X
2. Sumar 10 a X
3. Escribir el dato X
1. Leer el dato X
2. Sumar 10 a X
3. Escribir el dato X
Instancia 1 Instancia 2
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-25
Two-phase blocking
Antes de usar un dato, éste se bloquea.
Dos tipos de bloqueos: de lectura y de escritura.
Un bloqueo de lectura entra en conflicto con otro de escritura. Un bloqueo de escritura entra en conflicto con otro de escritura.
Una transacción puede obtener un dato si no se produce ningún conflicto. En caso de no poder obtener el dato, queda en espera hasta que el dato se libera.
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-26
Ejemplo
1. Bloqueo de escriturasobre X
2. Leer el dato X
3. Sumar 10 a X
4. Escribir el dato X
5. Liberar X
Instancia 1 Instancia 21. Bloqueo de escritura
sobre X
2. Leer el dato X
3. Sumar 10 a X
4. Escribir el dato X
5. Liberar X
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-27
Control optimista
1. Clonar X, guardandoel número de versión
2. Sumar 10 a X
3. Si el número de versiónde X es el mismo que eldel clon: escribirlo
4. Sino: abortar la transacción
Instancia 1 Instancia 21. Clonar X, guardando
el número de versión
2. Sumar 10 a X
3. Si el número de versiónde X es el mismo que eldel clon: escribirlo
4. Sino: abortar la transacción
Servicios Transaccionales © 2003-2004 Depto. Ciencia Computación e IA Características básicas-28
TP Monitor
Aplicación que realiza el control de las transacciones en una arquitectura de 3 capas
Mercado maduro: existe desde los años 80
Los servidores de aplicaciones son la siguiente evolución de los monitores de procesamiento de transacciones