Upload
leo-fernandez-lobon
View
29
Download
0
Embed Size (px)
Citation preview
Buenos Aires, ArgentinaOctubre de 2007
Universidad de Palermo Facultad de Ingeniera > IT Lab > AI Group
IntroducciIntroduccin a n a SpringSpring FrameworkFramework
MartMartn Agn [email protected]
versin 1.0
Contenidos parte I: Qu es Spring? Introduccin Arquitectura Caractersticas clave Ejemplos: IOC, AOP, Hibernate, Web services, Seguridad
Agenda
Contenidos parte II: Integracin con OpenSymphony Quartz Integracin con JavaServer Faces
Agenda
Agenda
Un archivo spring-training.rar acompaa al presente y contiene paquetes con el cdigo fuente de los ejemplos presentados a continuacin. Para ms informacin consultar el archivo README.txt ubicado dentro del rar.
Spring Framework:
Parte I
Un framework contenedor liviano basado en la tcnica Inversin de Control (IoC) y una implementacin de desarrollo segn el paradigma de Orientacin a Aspectos (AOP)
Qu es Spring?
Framework: porque define la forma de desarrollar aplicaciones J2EE, dando soporte y simplificando complejidad propia del software corporativo.
Inversin de Control (IoC): promueve el bajo acoplamiento a partir de la inyeccin de dependencias (DI) entre los objetos (relaciones).
Orientacin a Aspectos (AOP): presenta una estructura simplificada para el desarrollo y utilizacin de aspectos (mdulos multiple object crosscutting).
Spring Framework: introduccin
Spring Framework: arquitectura
provee un contexto apropiado para el desarrollo de aplicaciones web e integracin con otros frameworks(Struts, JSF, Tapestry, etc).
Web
acceso e interaccin con servicios enterprise.JEE
integracin con Hibernate, JDO, etc.ORM
accesos JDBC con manejo de transacciones (desde el mdulo AOP).
DAO
Spring Framework: arquitectura (cont.)
Spring Framework: caractersticas clave POJO: (Plain Old Java Object) revalora la simplicidad de las clases
Java aportando manejo de transacciones de forma no intrusiva.
XML: configuracin basada en archivos XML.
Seguridad: como un requerimiento no funcional implementado como un aspecto (AOP) a travs del framework Acegi.
Remoting: RMI simplificado, acceso y publicacin de web services.
Testing: provee un package de testing especfico para componentes del framework e integrado con JUnit.
1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web services: configuracin y consumo de un web service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: ejemplos
Spring Framework: IoC - DI1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web services: configuracin y consumo de un web service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: IoC - DI Dependencia tpica entre objetos
KnighOfTheRoundtable
new()
HolyGrailQuest
new HolyGrailQuest()
RescueDamselQuest
new RescueDamselQuest()
x alto acoplamientox difcil testeo unitario
Spring Framework: IoC - DI Usando Dependency Injection (DI)/ Inversion of Control (IoC)
HolyGrailQuest
new()
RescueDamselQuest
set Quest()
KnighOfTheRoundtable
new()
set Quest()
new()
colaboracin entre objetos centralizada relacin entre objetos delegada
Spring Framework: IoC - DI Cableado (wiring) de objetos
define el bean quest
define el bean knight
set del bean quest al bean knight(inyeccin de dependencia)
set del nombre de knight desde el constructor
1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web services: configuracin y consumo de un web Service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: AOP
Spring Framework: AOP Tpicas invocaciones a funcionalidades system-wide
LoggingModule
SecurityModule
TransactionManager
Student Service
Course Service
Instructor Service
Billing Service
Content Service
Spring Framework: AOP Usando AOP
Logging Module
Security Module
Tra
nsactio
nM
an
age
r
Student Service
Course Service
Billing Service Content Service
Instructor Service
Spring Framework: AOP Dependencia tpica entre objetos
Knight
new()
Minstrel
compose ()
Minstel: trovador/poeta(un logger)
x baja reusabilidadx duplicacin de cdigo
Spring Framework: AOP Objeto Minstrel Aspect-Oriented
Minstrel
Knight
separacin de funcionalidad por mdulos servicios aplicados de forma no intrusiva
Spring Framework: AOP Minstrel Aspect-Oriented
mtodo a ejecutar antes de la invocacin
logger de la clase a interceptar
Spring Framework: AOP Weaving (aplicar un advice) MinistrelAdvice a Knight
define el bean minstrel
intercepta invocaciones al objeto knight
minstrel primero ejecuta su mtodoluego knightTargetejecuta su mtodo
1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web services: configuracin y consumo de un web service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: Hibernate
Spring Framework: Hibernate gestin y definicin de recursos centralizada desde Spring.
conversin de excepciones propietarias.
acceso a mtodos DAO desde HibernateTemplate.
demarcado programtico de transacciones.
demarcado declarativo de transacciones.
Spring Framework: Hibernate gestin y definicin de recursos centralizada desde Spring (wiring):
Spring Framework: Hibernate
DataAccessException
DataAccessResourceFailureException
CleanupFailureDataAccessException
UncategorizedDataAccessException
DataIntegrityViolationException
InvalidDataAccessApiUsageException
InvalidDataAccessResourceUsageException
DataRetrievalFailureException
ObjectRetrievalFailureException
OptimisticLockingFailureException
ObjectOptimisticLockingFailureException
DeadLockLoserDataAccessException
TypemismatchDataAccessExceptionIncorrectUpdateSemanticsDataException
conversin de excepciones propietarias a:
Spring Framework: Hibernate acceso a mtodos DAO desde HibernateTemplate:
Es la versin en Spring de la interface Session de Hibernate.
Garantiza que las intantancias de Session sean abiertas, cerradas correctamente y participen automticamente en transacciones.
Instancias de HibernateTemplate son thread-safe y reusables.
Convierte las checked HibernateExceptions a uncheckedDataAccessExceptions (excepciones traducidas por Spring).
Spring Framework: Hibernate acceso a mtodos DAO desde HibernateTemplate:
set SessionFactory
uso de mtodo find()
Spring Framework: Hibernate demarcado programtico de transacciones
Requiere una instancia de PlatformTransactionManager.
set de myTxManagery productDao al servicio
Spring Framework: Hibernate demarcado programtico de transacciones
set de myTxManagery productDao
en contexto transaccional
Spring Framework: Hibernate demarcado declarativo de transacciones
Permite reemplazar demarcaciones explcitas en el cdigo Java interceptando mtodos con AOP.
Evita repeticiones de cdigo transaccional en servicios de negocio.
Niveles de transaccionabilidad (ej: comportamiento de la propagacin, niveles de aislamiento) pueden ser configurados desde un archivoexterno sin afectar la implementacin.
Spring Framework: Hibernate demarcado declarativo de transacciones
mtodo a interceptar
configura niveles de transaccionabilidad
Spring Framework: Hibernate demarcado declarativo de transacciones
interceptor de transacciones
Spring Framework: Hibernate demarcado declarativo de transacciones
no hay cdigo transaccional
1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web services: configuracin y consumo de un web service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: web services
Spring Framework: web services Spring expone web services con JAX-RPC (Java APIs for XML-based
remote procedure call). Accede a web services sin acoplar cdigo fuente, es decir configurados
por wiring (xml). En combinacin con Apache Axis, es posible generar automticamente
cdigo java (WSDL2Java) a partir de un archivo WSDL (Web ServiceDescription Language).
Configurando una tarea Apache Ant con parmetros especficos, Axispuede generar automticamente el cdigo Java para consumir un webservice desde Spring.
Spring Framework: web services configuracin y consumo de un web service
direccin al documento wsdldefine la interface que el cliente usa para acceder al servicio
valores utilizados por nameService para construir una QName
Spring permite utilizar una ServiceFactoryexterna, para este caso de Apache Axis
Interface que el cliente define para utilizar el web service
Uso del Web Service desde un contexto Spring
Spring Framework: web services configuracin y consumo de un web service
1. IoC: desacoplando clases cableando (wiring) beans.
2. AOP: interceptando mtodos con aspectos (aspects).
3. Hibernate: gestin integrada de transacciones y recursos.
4. Web Services: configuracin y consumo de un Web Service.
5. Seguridad: control y gestin de seguridad con Acegi.
Spring Framework: seguridad
Spring Framework: seguridadAcegi Security System:
seguridad declarativa para aplicaciones basadas en Spring Framework.
sub proyecto de Spring Framework.
provee una coleccin de beans configurables en el contexto Spring.
basado en DI-IoC (dependency injection) y AOP.
autentifica y autoriza accesos a aplicaciones web con filtros.
Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework
AuthenticationManager
Security Interceptor
Access DecisionManager
Run-As Manager
Determina identidad del usuario por principal(username) y credentials (password).
Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.
Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.
autorizacin re-autenticacinautenticacin
Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework
AuthenticationManager
Security Interceptor
Access DecisionManager
Run-As Manager
Determina identidad del usuario por principal(username) y credentials (password).
Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.
Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.
autorizacin re-autenticacinautenticacin
Spring Framework: seguridadAuthentication
ManagerProviderManager es la implementacin de AutenticationManagerque delega la responsabilidad de autenticar en uno o ms proveedores de autenticacin.
PasswordDaoAuthentication
Provider
Remote Authentication
ProviderJaas Authentication
ProviderCas Authentication
Provider
Provider Manager
Obtiene informacin del usuario de la base de datos, incluyendo username y password.
Dao AuthenticationProvider
LDAP
Single-Sign-On con YaleCAS (Central Authentication Service)
Spring Framework: seguridadAuthentication
ManagerPasswordDaoAuthenticationProvider es la implementacin especfica para autenticar contra un servidor LDAP. Delega en LdapPasswordAuthenticationDao la verificacin de credenciales.
Spring Framework: seguridadAuthentication
ManagerEl bean de LdapPasswordAuthenticationDao es cableado a un bean PasswordDaoAuthenticationProvider.
Wiring de PasswordDaoAuthenticationProvider
Interface que debe implementar
Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework
AuthenticationManager
Security Interceptor
Access DecisionManager
Run-As Manager
Determina identidad del usuario por principal(username) y credentials (password).
Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.
Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.
autorizacin re-autenticacinautenticacin
Spring Framework: seguridad
Un conjunto de objetos votan y deciden si un usuario est autorizado a acceder a un recurso, las decisiones pueden ser:
El objeto manager evala los votos y determina si las credenciales son suficientes para acceder, segn el siguiente criterio:
El votante es indiferente.ACCESS_ABSTAIN
El votante desea denegar el acceso al recurso restringido.ACCESS_DENIEDEl votante desea otorgar acceso al recurso restringido.ACCESS_GRANTED
Access DecisionManager
Es el responsable de decidir si el usuario autenticado por AuthenticationManager tiene los privilegios para acceder a un recurso restringido.
Permite acceso slo si no hubo votantes que denieguen acceso.UnanimousBasedPermite acceso si todos los votantes otorgan acceso.ConsensusBasedPermite acceso si al menos un votante otorga acceso.AffirmativeBasedCmo decide:Access Decision Manager:
Spring Framework: seguridadAcegi Security System: Elementos fundamentales de Acegi Framework
AuthenticationManager
Security Interceptor
Access DecisionManager
Run-As Manager
Determina identidad del usuario por principal(username) y credentials (password).
Administra accesos a recursos restringidos. Permite acceder segn la informacin de autenticacin y los atributos asociados al recurso.
Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.
autorizacin re-autenticacinautenticacin
Spring Framework: seguridad
AbstractSecurityInterceptor puede reemplazar de forma temporal el objeto de autenticacin siempre que haya sido procesado exitosamente por el AuthenticationManager y por AccessDecisionManager.
Permite a un usuario hacer llamadas a objetos que requieran diferentes credenciales de autenticacin y autorizacin.
Esta caracterstica es particularmente til para llamar Web Servicesremotos (segn documentacin de referencia del framework).
Run-As Manager
Autoriza acceso a subrecursos segn niveles determinados por autenticacin y credenciales.
objeto Authenticationexistente
objeto Authenticationreemplazante
Spring Framework: seguridadAcegi Security System:
seguridad declarativa para aplicaciones basadas en Spring Framework.
sub proyecto de Spring Framework.
provee una coleccin de beans configurables en el contexto Spring.
basado en DI-IoC (dependency injection) y AOP.
autentifica y autoriza accesos a aplicaciones web con filtros.
Spring Framework: seguridad autentifica y autoriza accesos a aplicaciones web con filtros:
Filtros interceptan request entrantes y aplican procesos de seguridad antes de ser evaluados por la aplicacin.
Acegi provee un conjunto de filtros especficos a diferentes etapas del proceso request.
Interceptan las solicitudes y reencaminan el flujo de la aplicacin a los correspondientes Authentication y Access Decision Managers.
Spring Framework: seguridad autentifica y autoriza accesos a aplicaciones web con filtros:
Channel-Processing Filter
Authentication-ProcessingFilter
Integration Filter
Security Enforcement Filter
Recurso Web Seguro
Request
Garantiza que un request sea transmitido por un canal seguro (ej: https)
Acepta request de autenticacin y reencamina las solicitudes al Authentication Manager.
Almacena y gestiona la informacin de autenticacin del usuario.
Garantiza que el usuario ha sido autenticado y cumple con la autorizacin para acceder a un recurso web restringido.
Spring Framework:
Fin de Parte I
Agenda
Contenidos parte II: Integracin con OpenSymphony Quartz Integracin con JavaServer Faces
Spring Framework:
Parte II
6. Quartz: scheduling jobs con Quartz desde Spring.
7. JSF: integracin con JavaServer Faces.
Spring Framework: Parte II
6. Quartz: scheduling jobs con Quartz desde Spring.
7. JSF: integracin con JavaServer Faces.
Spring Framework: scheduling
Spring Framework: scheduling
idgrupoid_jobDetailid_grupo_jobDetailcron expressions
org.quartz.Joborg.quartz.Job
MyJob
org.quartz.Joborg.quartz.Joborg.quartz.Joborg.quartz.Job
org.quartz.JobDetail
org.quartz.Scheduler org.quartz.Trigger
idgrupo
0 0 12 * * ? Fire at 12pm (noon) every day
addJob()
scheduleJob()
org.quartz.JobDetail
org.quartz.Job
org.quartz.JobDetail
configuracin de trabajos con la API de OpenSymphony Quartz
Programar trabajos (jobs) de ejecucin automtica ante eventos o por calendario:
Spring Framework: scheduling Programar jobs cableando (wiring) de clases que son parte de Spring:
configuracin de trabajos Quartz con Spring
Spring Framework: scheduling Ejemplos de expresiones cron utilizadas por Quartz para programar jobs:
Fire every November 11th at 11:11am. 0 11 11 11 11 ?
Fire at 12pm (noon) every 5 days every month, starting on the first day of the month. 0 0 12 1/5 * ?
Fire at 10:15am on the third Friday of every month 0 15 10 ? * 6#3
Fire at 10:15am on every last friday of every month during the years 2002, 2003, 2004 and 2005 0 15 10 ? * 6L 2002-2005
Fire at 10:15am on the last Friday of every month 0 15 10 ? * 6L
Fire at 10:15am on the last Friday of every month 0 15 10 ? * 6L
Fire at 10:15am on the last day of every month 0 15 10 L * ?
Fire at 10:15am on the 15th day of every month 0 15 10 15 * ?
Fire at 10:15am every Monday, Tuesday, Wednesday, Thursday and Friday 0 15 10 ? * MON-FRI
Fire at 2:10pm and at 2:44pm every Wednesday in the month of March. 0 10,44 14 ? 3 WED
Fire every minute starting at 2pm and ending at 2:05pm, every day 0 0-5 14 * * ?
Fire every 5 minutes starting at 2pm and ending at 2:55pm, AND fire every 5 minutes starting at 6pm and ending at 6:55pm, every day
0 0/5 14,18 * * ?
Fire every 5 minutes starting at 2pm and ending at 2:55pm, every day 0 0/5 14 * * ?
Fire every minute starting at 2pm and ending at 2:59pm, every day 0 * 14 * * ?
Fire at 10:15am every day during the year 2005 0 15 10 * * ? 2005
Fire at 10:15am every day 0 15 10 * * ? *
Fire at 10:15am every day 0 15 10 * * ?
Fire at 10:15am every day 0 15 10 ? * *
Fire at 12pm (noon) every day 0 0 12 * * ?
Meaning Expression
6. Quartz: scheduling jobs con Quartz desde Spring.
7. JSF: integracin con JavaServer Faces.
Spring Framework: JSF
Spring Framework: JSF
Inyeccin de beans Spring en Managed beans de JSF: separacin lgica entre capa de servicios - UI. soporte integrado con Spring desde DelegatingVariableResolver.
JavaServer Faces (JSF): components based framework. event-driven components. multiplataforma, multidispositivo.parte de J2EE 1.5
Spring Framework: JSF configuracin de archivo faces-config.xml de JSF:
WebApplicationContext:
utiliza el WebApplicationContextVariableResolver.
expone WebApplicationContext bajo variable webApplicationContext.
permite acceder a la BeanFactory de Spring y otros servicios directamente desde los Managed Beans.
Spring Framework: JSF
Spring Framework:
Fin de Parte II
Spring Framework: autores
Spring FrameworkRod Johnson, Juergen Hoeller, Alef Arendsen, Colin Sampaleanu, et al.
Acegi Security for SpringBen Alex
HibernateGavin King et al.
OpenSymphony QuartzJames House, Jasper Rosenberg, Aaron Craven.
Spring Framework: referencias
Spring in Action, Walls-BreidenbachSpring Framework referenceAcegi referenceQuartz documentationData Access with the Spring Framework, Juergen HoellerApache Axis user guidePOJOs in Action, RichardsonSpring and JavaServerFaces Technology: Synergy or Superfluous?
Spring Framework: ms informacin
Actualizacin Spring 2.0 http://www.infoq.com/articles/spring-2-intro
Simplifying Enterprise Applications with Spring 2.0 and AspectJhttp://www.infoq.com/articles/Simplifying-Enterprise-Apps
Building JavaServer Faces Applications with Spring and Hibernatehttp://developers.sun.com/learning/javaoneonline/2007/pdf/TS-7082.pdf
Spring Framework: propiedad intelectual
Todas las marcas mencionadas son propiedad exclusiva de sus dueos.
Spring Framework: fin de presentacin
www.palermo.edu