Un Interceptor es una clase especial que dispone de un método que es ejecutado cuando se invoca un método de un EJB, bien porque el método invocado está anotado específicamente para ser interceptado o bien porque la clase entera está anotada para ser interceptada, de manera, que este hecho afectará a todos sus métodos. En resumen, los Interceptors permien hacer procesamientos anteriores y posteriores a la ejecución de un método de un EJB.
 |
Clase correspondiente a un Interceptor. El método tiene que ser anotado con @AroundInvoke y debe respetar la signatura mostrada en la figura, aunque su nombre es indiferente. El parámetro context encapsula todos los metadatos correspondientes a la clase y el método interferidos. Así, en este ejemplo, se emplea el parámetro de tipo InvocationContext para imprimir el nombre del método interferido. El método proceed() permite ejecutar el método interferido, por lo que todo el código anterior corresponde a preprocesamiento y el posterior a postprocesamiento. |
Puedes descargar el código de InterceptorSimple
aquí
Puedes acceder a la API de la clase InvocationContext
aquí
 |
Por su parte, el componente intercepado, tiene que ser anotado con @Interceptors para indicar qué clases de tipo Interceptor tiene asociadas |
 |
Esta es la salida generada por el interceptor de ejemplo en la consola del servidor GlassFish cuando es interceptado el método onMessage() del EJB NewMessage. |