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

Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaLuis Minaya
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxRAMON EUSTAQUIO CARO BAYONA
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialpatriciaines1993
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...YobanaZevallosSantil1
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfAlfredoRamirez953210
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOweislaco
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Rosabel UA
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORGonella
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfvictorbeltuce
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxEribertoPerezRamirez
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsxJuanpm27
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas123yudy
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024gharce
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfssuser50d1252
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxYeseniaRivera50
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALEDUCCUniversidadCatl
 

Último (20)

Manejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsaManejo del Dengue, generalidades, actualización marzo 2024 minsa
Manejo del Dengue, generalidades, actualización marzo 2024 minsa
 
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docxMODELO DE INFORME DE INDAGACION CIENTIFICA .docx
MODELO DE INFORME DE INDAGACION CIENTIFICA .docx
 
Día de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundialDía de la Madre Tierra-1.pdf día mundial
Día de la Madre Tierra-1.pdf día mundial
 
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO  YESSENIA 933623393 NUEV...
IV SES LUN 15 TUTO CUIDO MI MENTE CUIDANDO MI CUERPO YESSENIA 933623393 NUEV...
 
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdfEstrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
Estrategias de enseñanza - aprendizaje. Seminario de Tecnologia..pptx.pdf
 
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJOTUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
TUTORIA II - CIRCULO DORADO UNIVERSIDAD CESAR VALLEJO
 
La luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luzLa luz brilla en la oscuridad. Necesitamos luz
La luz brilla en la oscuridad. Necesitamos luz
 
Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024Actividad transversal 2-bloque 2. Actualización 2024
Actividad transversal 2-bloque 2. Actualización 2024
 
TL/CNL – 2.ª FASE .
TL/CNL – 2.ª FASE                       .TL/CNL – 2.ª FASE                       .
TL/CNL – 2.ª FASE .
 
DETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIORDETALLES EN EL DISEÑO DE INTERIOR
DETALLES EN EL DISEÑO DE INTERIOR
 
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdfMapa Mental de estrategias de articulación de las areas curriculares.pdf
Mapa Mental de estrategias de articulación de las areas curriculares.pdf
 
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docxPROGRAMACION ANUAL DE MATEMATICA 2024.docx
PROGRAMACION ANUAL DE MATEMATICA 2024.docx
 
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
3. Pedagogía de la Educación: Como objeto de la didáctica.ppsx
 
periodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicasperiodico mural y sus partes y caracteristicas
periodico mural y sus partes y caracteristicas
 
Earth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversaryEarth Day Everyday 2024 54th anniversary
Earth Day Everyday 2024 54th anniversary
 
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
SISTEMA INMUNE FISIOLOGIA MEDICA UNSL 2024
 
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdfFichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
Fichas de Matemática DE SEGUNDO DE SECUNDARIA.pdf
 
PPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptxPPTX: La luz brilla en la oscuridad.pptx
PPTX: La luz brilla en la oscuridad.pptx
 
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptxPresentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
Presentación de Estrategias de Enseñanza-Aprendizaje Virtual.pptx
 
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMALVOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
VOLUMEN 1 COLECCION PRODUCCION BOVINA . SERIE SANIDAD ANIMAL
 

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