ejemplo - ¿Qué son los interceptores en Java EE?
interceptores java ejemplo (3)
Estoy tratando de aclarar mi concepto sobre Interceptores en Java EE. He leído la especificación Java EE pero estoy un poco confundido al respecto. Por favor, bríndenos algún enlace o tutorial útil que pueda aclarar mi concepto. ¿Cómo, cuándo, por qué usamos interceptores?
Los interceptores se usan para agregar capacidad de AOP a los beans administrados.
Podemos adjuntar Interceptor a nuestra clase usando la anotación @Interceptor. Siempre que se llame a un método en nuestra clase , el Interceptor adjunto interceptará esa invocación al método y ejecutará su método interceptor.
Esto se puede lograr usando la anotación @AroundInvoke (ver ejemplo a continuación).
Podemos interceptar eventos del ciclo de vida de una clase (creación de objetos, destrucción, etc.) utilizando la anotación @AroundConstruct.
La principal diferencia entre los filtros Interceptor y Servlet es que podemos usar el Interceptor fuera de WebContext, pero los filtros son específicos de las aplicaciones web.
Los usos comunes de los interceptores son el registro, la auditoría y la creación de perfiles.
Para una introducción más detallada, puede leer este artículo. https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/
Los interceptores se utilizan para implementar problemas transversales, como el registro, la auditoría y la seguridad, desde la lógica comercial.
En Java EE 5, los interceptores solo se permitieron en EJB. En Java EE 6, Interceptors se convirtió en una nueva especificación propia, abstraída a un nivel superior, de modo que se puede aplicar más genéricamente a un conjunto más amplio de especificaciones en la plataforma.
Interceptan invocaciones y eventos del ciclo de vida en una clase objetivo asociada. Básicamente, un interceptor es una clase cuyos métodos se invocan cuando se invocan los métodos de negocios en una clase objetivo, se producen eventos de ciclo de vida como métodos que crean / destruyen el bean, o se produce un método de tiempo de espera EJB. La especificación CDI define un mecanismo de seguridad de tipo para asociar interceptores a beans utilizando enlaces de interceptor.
Busque una muestra de código de trabajo en:
https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7 también introdujo una nueva anotación @Transactional en Java Transaction API. Esto le permite realizar transacciones gestionadas por contenedor fuera de un EJB. Esta anotación se define como un enlace de interceptor e implementado por el tiempo de ejecución de Java EE. Una muestra de trabajo de @Transactional está en:
https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
Me gusta esta definición: los interceptores son componentes que interceptan llamadas a métodos EJB. Se pueden usar para auditar y registrar a medida que se accede a los EJB.
En otra situación, se pueden usar en una situación en la que necesitamos verificar si un cliente tiene la autoridad o autorización para ejecutar una transacción en un objeto particular en la base de datos. Bueno, aquí es donde los Interceptores son útiles; pueden verificar si el cliente / usuario tiene esa autoridad al verificar si puede invocar ese método en ese objeto de base de datos o EJB.
Sin embargo, todavía tendría un vistazo al siguiente artículo y al siguiente tutorial para tener una idea de cómo se usan en una configuración / entorno Java EE.