EJB 3.0 Transacciones y seguridad Tutor: Ing. Juan E. Talavera Horn 2010
Transacciones Atomicidad (Atomicity) Consistencia (Consistency) Aislamiento (Isolation) Durabilidad (Durability)
Aplicación de usuario Arquitectura Transaction Manager Resource Manager 2-phase commit
Tipos de transacciones Local Hace uso de un solo resource manager Global Hace uso de más de un resource manager
Estándares y protocolos Resource Manager implementa API JTA (Java Transaction API) Protocolo de consumación de 2 faces: XA protocol
Transacciones en EJB 3.0 CMT Container Managed Transactions BMT Bean Managed Transactions
CMT - Container Managed Transactions
@TransactionAttribute
Estado de transacción actual
Application public class CreditValidationException extends Exception { …. public class CreditProcessingException extends Exception { …. public class DatabaseException extends RuntimeException { …. }
Rollback con excepciones public void placeSnagItOrder(Item item, Customer customer) throws CreditValidationException, CreditProcessingException, DatabaseException { if (!bidsExists(item)) { validateCredit(customer); chargeCustomer(customre,item); removeItemFromBidding(item); }
BMT - Bean Managed Transactions
Pros y contras de BMT (1) No necesitan iniciar y terminar exactamente con el inicio y fin de un método. Podría ser útil para mantener transacción entre métodos de un stateful bean La transacción puede durar solo el tiempo estríctamente necesario, y no durante todo el método que podría implicar código que no requiera de una transacción
Pros y contras de BMT (2) Las BMTs no pueden unirse (join) a una transacción existente Las transacciones existentes son siempre suspendidas al invocar un método que usa BMT
Seguridad en EJB 3 Autenticación Autorización Usuario (principal) Grupo Rol JAAS – Java Authentication and Authorization Service
JAAS – Escenario habitual
Autenticación y autorización en la capa Web
Seguridad en session beans 1.Los roles pueden declararse para toda la aplicación en deployment descriptors 2.Si no se declaran los roles, el contenedor escanea las clases en busca de roles 3.Pueden aplicarse a nivel de clase 4.Puede sobre escribirse el permiso a nivel de clase con uno a nivel de método
Annotations @RunAs