Umaír
Estoy tratando de aclarar mi concepto sobre Interceptors en Java EE. He leído la especificación Java EE pero estoy un poco confundido al respecto. Por favor, proporcione algún enlace útil o tutorial que pueda aclarar mi concepto. ¿Cómo, cuándo y por qué usamos interceptores?
Los interceptores se utilizan para implementar aspectos transversales, como el registro, la auditoría y la seguridad, desde la lógica empresarial.
En Java EE 5, los interceptores solo se permitían en EJB. En Java EE 6, Interceptors se convirtió en una nueva especificación propia, resumida en un nivel superior para que pueda aplicarse de manera más genérica a un conjunto más amplio de especificaciones en la plataforma.
Interceptan invocaciones y eventos de ciclo de vida en una clase de destino asociada. Básicamente, un interceptor es una clase cuyos métodos se invocan cuando se invocan métodos comerciales en una clase de destino, se producen eventos del ciclo de vida, como métodos que crean/destruyen el bean, o se produce un método de tiempo de espera de EJB. La especificación CDI define un mecanismo de tipo seguro 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 la API de transacciones de Java. Esto le permite tener transacciones administradas por contenedor fuera de un EJB. Esta anotación se define como un enlace de interceptor y se implementa mediante 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
Sundararaj Govindasamy
Los interceptores se utilizan para añadir capacidad AOP a frijoles manejados.
Podemos adjuntar Interceptor a nuestra clase usando la anotación @Interceptor.
Cada vez que se llama a un método en nuestra claseel Interceptor adjunto interceptará la invocación de ese método y ejecutará su método interceptor.
Esto se puede lograr usando la anotación @AroundInvoke (vea el ejemplo a continuación).
Podemos interceptar eventos del ciclo de vida de una clase (creación de objetos, destrucción, etc.) usando la anotación @AroundConstruct.
Diferencia principal entre interceptor y Filtros de servlets is Podemos usar Interceptor fuera de WebContext, pero los filtros son específicos para 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/
Pantera negra
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 la 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 verificando si puede invocar ese método en ese objeto de base de datos o EJB.
Sin embargo, todavía echaría un vistazo a lo siguiente artículo y lo siguiente tutorial para tener una idea de cómo se utilizan en una configuración/entorno Java EE.
Ruwan Prasad
Puede usar Interceptor para los lugares donde desea realizar algunas tareas antes de enviar una solicitud a la clase Controlador y antes de enviar una solicitud a una respuesta. Ej: – Piense que desea validar el token de autenticación antes de enviar una solicitud a la clase Controller en este caso, puede usar Intercepters. Código de muestra:
@Component
public class AuthInterceptor implements HandlerInterceptor {
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) throws Exception {
//Here you can write code to validate the auth token.
}
}
Echa un vistazo a la sección sobre interceptores en el tutorial oficialtambién contiene un ejemplo listo para ejecutar que muestra interceptores en un bean sin estado.
– fvu
17/09/2013 a las 15:00