SlideShare una empresa de Scribd logo
1 de 20
Monitorizando aplicacionescon AspectJ Mauricio Quezada 04/02/2011
AspectJ Lenguaje orientado a aspectos Aspecto: modularizacrosscuttingconcerns Se compila a código Java equivalente
AspectJ Joinpoint: “la llamada a un método”
AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()”
AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()” Advice : “después de llamar a foo(), imprime ‘hola’”
AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()” Advice : “después de llamar a foo(), imprime ‘hola’” after(): call(voidfoo()) { System.out.println(“hola”); }
Youhaveto catch ‘emall after() throwing(Throwable t):execution(* *..*(..)) { Controller.process(t, thisJoinPoint); }
Youhaveto catch ‘emall after() throwing(Throwable t):execution(* *..*(..)) { Controller.process(t, thisJoinPoint); } thisJoinPoint / thisJoinPointStaticPart: - Información dinámica/estática del joinpoint   capturado (source, método, argumentos, etc)
Problema class A { voidfoo() { throw new Error(); } void bar() { foo(); } staticpublicvoidmain() { 		new A().bar(); } }
Se registra la excepción 2 veces!
Se registra la excepción 2 veces! Solución: guardar la excepción recién 			 capturada if(isParentOrSame( ex, recordedEx )) recordedEx = ex;
<?xmlversion="1.0" encoding="UTF-8"?> <root> 	<actions> 	  <action id=“FileAction" 		class=“fwerrores.actions.FileAction"> 		  <paramname="filename" value="fwfile.log" /> 	  </action> 	</actions>	 <application>  	  <exceptionname-pattern="*..Throwable+" thrower="*..*"> 	    <actionref=“FileAction" />   </exception>  ... </application>		 </root>
Ejecución Ideal Incluir la librería fwerrores.jar en el classpath
Ejecución Ideal Incluir la librería fwerrores.jar en el classpath Listo!
Ejecución Ideal Aplicación standalone Agregar “–javaagent:<aspectJ>/aspectjweaver.jar”a los parámetros de la JVM al iniciar la aplicación
Ejecución Ideal Aplicación Web / “Empresarial” Tomcat Modificar context.xml declarando el reemplazo del classloader principal JBoss 6.0 Modificar jboss-scanning.xml indicando que se carguen primero las clases del ApplicationContext WAS ಠ_ಠ
Classloader? Agent? ¿No que AspectJ hace todo automágicamente? AspectJ se recompila en conjunto con el código Java para incluir los advices Existe la posiblidad de hacer el weaving de aspectos en tiempo de carga de clases, sin recompilar nada “-javaagent” permite realizar acciones antes del main (a través de premain)
Classloader? Agent? Load-Time Weaving AspectJ se encarga de agregar un ClassTransformer al classloader de la aplicación que realiza el weaving En Tomcat, el WebAppClassLoader no admite la posibilidad de incluir transformadores de clases Es por eso que se extiende el classloader para incluirlos Los demás servidores de aplicaciones ya lo permiten (por ejemplo, para JPA)
Pendientes Las clases de los JSP se generan en un classloader distinto al de la aplicación Los EJB a su vez pueden correr en una aplicación diferente (distinto ClassLoader) Habilitar el FW en WAS <= 6 (JDK 1.4) Realizar más acciones thread-safe
Gracias! =)

Más contenido relacionado

Similar a Monitorizando aplicaciones con AspectJ

Similar a Monitorizando aplicaciones con AspectJ (20)

Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Construccion a través de compontes
Construccion a través de compontesConstruccion a través de compontes
Construccion a través de compontes
 
Curso de Desarrollo Web 2
Curso de Desarrollo Web 2Curso de Desarrollo Web 2
Curso de Desarrollo Web 2
 
Java 7- Java Day Guatemala
Java 7- Java Day GuatemalaJava 7- Java Day Guatemala
Java 7- Java Day Guatemala
 
Gwt III - Avanzado
Gwt III - AvanzadoGwt III - Avanzado
Gwt III - Avanzado
 
Spring framework
Spring frameworkSpring framework
Spring framework
 
Interfaces Usuario 3
Interfaces Usuario 3Interfaces Usuario 3
Interfaces Usuario 3
 
Introducccion springframework
Introducccion springframeworkIntroducccion springframework
Introducccion springframework
 
Hands-on Spring 3: The next generation
Hands-on Spring 3: The next generationHands-on Spring 3: The next generation
Hands-on Spring 3: The next generation
 
Jsf
JsfJsf
Jsf
 
Java
JavaJava
Java
 
Manual Basico De Struts
Manual Basico De StrutsManual Basico De Struts
Manual Basico De Struts
 
Todo Javascript para canibales
Todo Javascript para canibalesTodo Javascript para canibales
Todo Javascript para canibales
 
Javascript de Canibales
Javascript de CanibalesJavascript de Canibales
Javascript de Canibales
 
Java Script de canibaless
Java Script de canibalessJava Script de canibaless
Java Script de canibaless
 
Clase
ClaseClase
Clase
 
OSGi
OSGiOSGi
OSGi
 

Más de Mauricio Quezada

Línea de tiempo Movimiento Estudiantil 2011
Línea de tiempo Movimiento Estudiantil 2011Línea de tiempo Movimiento Estudiantil 2011
Línea de tiempo Movimiento Estudiantil 2011Mauricio Quezada
 
Proofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
Proofs of Partial Knowledge and Simplified Design of Witness Hiding ProtocolsProofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
Proofs of Partial Knowledge and Simplified Design of Witness Hiding ProtocolsMauricio Quezada
 
Criptografía y Teoría de Juegos
Criptografía y Teoría de JuegosCriptografía y Teoría de Juegos
Criptografía y Teoría de JuegosMauricio Quezada
 
Cómo compartir un Secreto
Cómo compartir un SecretoCómo compartir un Secreto
Cómo compartir un SecretoMauricio Quezada
 

Más de Mauricio Quezada (6)

Línea de tiempo Movimiento Estudiantil 2011
Línea de tiempo Movimiento Estudiantil 2011Línea de tiempo Movimiento Estudiantil 2011
Línea de tiempo Movimiento Estudiantil 2011
 
Aspectos y seguridad
Aspectos y seguridadAspectos y seguridad
Aspectos y seguridad
 
Proofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
Proofs of Partial Knowledge and Simplified Design of Witness Hiding ProtocolsProofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
Proofs of Partial Knowledge and Simplified Design of Witness Hiding Protocols
 
Criptografía y Teoría de Juegos
Criptografía y Teoría de JuegosCriptografía y Teoría de Juegos
Criptografía y Teoría de Juegos
 
Cómo compartir un Secreto
Cómo compartir un SecretoCómo compartir un Secreto
Cómo compartir un Secreto
 
Introduccion a AspectJ
Introduccion a AspectJIntroduccion a AspectJ
Introduccion a AspectJ
 

Último

TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSjlorentemartos
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoFundación YOD YOD
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024AndreRiva2
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdfDemetrio Ccesa Rayme
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...JonathanCovena1
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PCCesarFernandez937857
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arteRaquel Martín Contreras
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdfgimenanahuel
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuaDANNYISAACCARVAJALGA
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Lourdes Feria
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfMaryRotonda1
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscaeliseo91
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticosisabeltrejoros
 

Último (20)

TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOSTEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
TEMA 13 ESPAÑA EN DEMOCRACIA:DISTINTOS GOBIERNOS
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Heinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativoHeinsohn Privacidad y Ciberseguridad para el sector educativo
Heinsohn Privacidad y Ciberseguridad para el sector educativo
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024UNIDAD DPCC. 2DO. DE  SECUNDARIA DEL 2024
UNIDAD DPCC. 2DO. DE SECUNDARIA DEL 2024
 
Neurociencias para Educadores NE24 Ccesa007.pdf
Neurociencias para Educadores  NE24  Ccesa007.pdfNeurociencias para Educadores  NE24  Ccesa007.pdf
Neurociencias para Educadores NE24 Ccesa007.pdf
 
La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...La empresa sostenible: Principales Características, Barreras para su Avance y...
La empresa sostenible: Principales Características, Barreras para su Avance y...
 
Identificación de componentes Hardware del PC
Identificación de componentes Hardware del PCIdentificación de componentes Hardware del PC
Identificación de componentes Hardware del PC
 
Historia y técnica del collage en el arte
Historia y técnica del collage en el arteHistoria y técnica del collage en el arte
Historia y técnica del collage en el arte
 
30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf30-de-abril-plebiscito-1902_240420_104511.pdf
30-de-abril-plebiscito-1902_240420_104511.pdf
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
Repaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia GeneralRepaso Pruebas CRECE PR 2024. Ciencia General
Repaso Pruebas CRECE PR 2024. Ciencia General
 
cortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahuacortes de luz abril 2024 en la provincia de tungurahua
cortes de luz abril 2024 en la provincia de tungurahua
 
Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...Caja de herramientas de inteligencia artificial para la academia y la investi...
Caja de herramientas de inteligencia artificial para la academia y la investi...
 
Manual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdfManual - ABAS II completo 263 hojas .pdf
Manual - ABAS II completo 263 hojas .pdf
 
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdfPlanificacion Anual 2do Grado Educacion Primaria   2024   Ccesa007.pdf
Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
 
la unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fiscala unidad de s sesion edussssssssssssssscacio fisca
la unidad de s sesion edussssssssssssssscacio fisca
 
texto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticostexto argumentativo, ejemplos y ejercicios prácticos
texto argumentativo, ejemplos y ejercicios prácticos
 

Monitorizando aplicaciones con AspectJ

  • 1. Monitorizando aplicacionescon AspectJ Mauricio Quezada 04/02/2011
  • 2. AspectJ Lenguaje orientado a aspectos Aspecto: modularizacrosscuttingconcerns Se compila a código Java equivalente
  • 3. AspectJ Joinpoint: “la llamada a un método”
  • 4. AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()”
  • 5. AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()” Advice : “después de llamar a foo(), imprime ‘hola’”
  • 6. AspectJ Joinpoint: “la llamada a un método” Pointcut : “la llamada al método foo()” Advice : “después de llamar a foo(), imprime ‘hola’” after(): call(voidfoo()) { System.out.println(“hola”); }
  • 7. Youhaveto catch ‘emall after() throwing(Throwable t):execution(* *..*(..)) { Controller.process(t, thisJoinPoint); }
  • 8. Youhaveto catch ‘emall after() throwing(Throwable t):execution(* *..*(..)) { Controller.process(t, thisJoinPoint); } thisJoinPoint / thisJoinPointStaticPart: - Información dinámica/estática del joinpoint capturado (source, método, argumentos, etc)
  • 9. Problema class A { voidfoo() { throw new Error(); } void bar() { foo(); } staticpublicvoidmain() { new A().bar(); } }
  • 10. Se registra la excepción 2 veces!
  • 11. Se registra la excepción 2 veces! Solución: guardar la excepción recién capturada if(isParentOrSame( ex, recordedEx )) recordedEx = ex;
  • 12. <?xmlversion="1.0" encoding="UTF-8"?> <root> <actions> <action id=“FileAction" class=“fwerrores.actions.FileAction"> <paramname="filename" value="fwfile.log" /> </action> </actions> <application> <exceptionname-pattern="*..Throwable+" thrower="*..*"> <actionref=“FileAction" /> </exception> ... </application> </root>
  • 13. Ejecución Ideal Incluir la librería fwerrores.jar en el classpath
  • 14. Ejecución Ideal Incluir la librería fwerrores.jar en el classpath Listo!
  • 15. Ejecución Ideal Aplicación standalone Agregar “–javaagent:<aspectJ>/aspectjweaver.jar”a los parámetros de la JVM al iniciar la aplicación
  • 16. Ejecución Ideal Aplicación Web / “Empresarial” Tomcat Modificar context.xml declarando el reemplazo del classloader principal JBoss 6.0 Modificar jboss-scanning.xml indicando que se carguen primero las clases del ApplicationContext WAS ಠ_ಠ
  • 17. Classloader? Agent? ¿No que AspectJ hace todo automágicamente? AspectJ se recompila en conjunto con el código Java para incluir los advices Existe la posiblidad de hacer el weaving de aspectos en tiempo de carga de clases, sin recompilar nada “-javaagent” permite realizar acciones antes del main (a través de premain)
  • 18. Classloader? Agent? Load-Time Weaving AspectJ se encarga de agregar un ClassTransformer al classloader de la aplicación que realiza el weaving En Tomcat, el WebAppClassLoader no admite la posibilidad de incluir transformadores de clases Es por eso que se extiende el classloader para incluirlos Los demás servidores de aplicaciones ya lo permiten (por ejemplo, para JPA)
  • 19. Pendientes Las clases de los JSP se generan en un classloader distinto al de la aplicación Los EJB a su vez pueden correr en una aplicación diferente (distinto ClassLoader) Habilitar el FW en WAS <= 6 (JDK 1.4) Realizar más acciones thread-safe