Hace un par de semanas les platicaba la forma de reducir costos en el ciclo de vida de las aplicaciones, utilizando Programación Orientada a Servicios.

En esta ocasión les cuento como aplicar técnicamente AOP. Pensemos en un aspecto que gestione cualquier error que suceda dentro la aplicación. Para implementarlo sigamos los siguientes pasos:

  1. Para configurar SPRING basta con agregar la siguiente línea en el ApplicationContext.xml de nuestra aplicación:
  • <aop:aspectj-autoproxy />

Esta línea sirve para inicializar el uso de Aspectos por medio de anotaciones.

  1. Se debe crear el servicio que atrapará todo tipo de Error dentro del sistema. Lo único que debemos hacer, para notificarle al Servidor que es una clase de tipo filtro, es agregarle la anotación de @Aspect a la clase:
  • @Aspect
  • @Component
  • public class ExceptionLogger
  • {
  • }
  1. Una vez creada la clase, se crea un método que será ejecutado cada vez que exista una falla. Una vez elegido el método debemos agregar la configuración del Aspecto con la anotación @AfterThrowing, la cual prende un FILTRO que será invocado después de que se lance una exepción:
  • @AfterThrowing (pointcut=
  • “execution(*mx.com.xyz.negocio.*.bo.impl.*BOImpl*.*(..))”,
  • throwing=
  • “throwable”)
  • public void handleException(Throwable throwable)
  • {
  • }

La anotación contiene dos atributos que deben definirse:

  1. Pointcut: debe indicarse la clase o paquete que debe respetar el filtro. En este caso se activará el filtro para todas las clases dentro del paquete mx.com.xyz.negocio.*.bo.impl, pero que además tengan un nombre que contenga la palabra: BOImpl.
  2. Throwing: indicamos el tipo de Exepciones que atrapará nuestro filtro, en este caso es cualquier tipo de Excepción debido a que la clase Throwable es el Objeto del que heredan todas las Excepciones que se lanzan dentro del compilador.
  1. Para finalizar el Aspecto sólo resta desarrollar lo que queremos que se realice cuando se atrapa una falla, dentro de estas acciones podrían estar:
    1. Enviar un correo notificando la falla.
    2. “Bitacorear” el error en un archivo o Base de Datos.
    3. “Redireccionar” al usuario a otra pantalla alternativa.
    4. Etc.

Con este tipo de soluciones lo que logramos, como lo dijimos en el artículo pasado de Aspectos, es reducir de manera importante el costo total de mantenimiento del sistema, ya que el programador ya sólo debe encargarse de codificar reglas de negocio y no estar pensando en cómo resolver un tema tan trivial como lo es el manejo de Errores.

IMPORTANTE: muchas veces al aplicar varios Aspectos (filtros) en una aplicación el tiempo de respuesta hacia el usuario final se puede ver afectado. Para esto es recomendable realizar un diseño adecuado de los Aspectos, en el cual se puede considerar el uso de servicios Asíncronos (colas de mensajes), esto ayudará considerablemente a atacar esta problemática de diseño.

Así como este ejemplo, tan sencillo, se pueden realizar varias tareas por medio de Aspectos:

  • Seguridad (AAA)
  • Manejo de Sesiones
  • Auditoría
  • Transaccionalidad de clases
  • Persistencia
  • Etc.

Unitis

En UNITIS, estamos convencidos que se necesitan más que ingenieros expertos para dar un mejor servicio de CONSULTORÍA, por lo que tenemos como único objetivo:

“Convertir a las áreas de TI en el motor de inteligencia de la información para el NEGOCIO”

Notas Recientes

Reacciona ante el riesgo
Reacciona ante el riesgo de la pérdida de información
15 mayo, 2019By
Desarrollo
¿No tienes tiempo de desarrollar bajo buenas prácticas?
13 mayo, 2019By
un área de inteligencia para el negocio
Más que TI, un área de inteligencia para el negocio
10 mayo, 2019By
SOA
¿Cómo empezar a hacer SOA?
10 mayo, 2019By
Costos en el Desarrollo
Como ahorrar costos en el desarrollo
10 mayo, 2019By

Casos Recientes

Related Posts

Leave a Reply