[英]In need to create method interceptors in plain java (ee, servlets and POJOs) to use in weblogic, what can I use to do so?
[英]What are Interceptors in Java EE?
我试图澄清我关于 Java EE 中拦截器的概念。 我已经阅读了 Java EE 规范,但我对此并不感到困惑。 请为我提供一些有用的链接或教程,它们可以清除我的概念。 我们如何、何时、为什么使用拦截器?
拦截器用于从业务逻辑实现跨域关注,例如日志记录,审计和安全性。
在Java EE 5中,仅允许在EJB上使用拦截器。 在Java EE 6中,Interceptor成为了自己的新规范,在更高层次上进行了抽象,因此它可以更广泛地应用于平台中更广泛的规范集。
它们拦截相关目标类的调用和生命周期事件。 基本上,拦截器是一个类,其方法在调用目标类上的业务方法时调用,生命周期事件(如创建/销毁bean的方法)或EJB超时方法发生。 CDI规范定义了一种类型安全机制,用于使用拦截器绑定将拦截器与bean相关联。
在以下位置查找工作代码示例:
https://github.com/arun-gupta/javaee7-samples/tree/master/cdi/interceptors
Java EE 7还在Java Transaction API中引入了一个新的@Transactional注释。 这允许您在EJB之外拥有容器管理的事务。 此批注被定义为拦截器绑定,并由Java EE运行时实现。 @Transactional的工作样本位于:
https://github.com/arun-gupta/javaee7-samples/tree/master/jta/transaction-scope
拦截器用于向托管bean 添加AOP功能 。
我们可以使用@Interceptor注释将Interceptor附加到我们的类。 每当调用我们类中的方法时 ,附加的Interceptor将拦截该方法调用并执行其拦截器方法。
这可以使用@AroundInvoke注释来实现(参见下面的示例)。
我们可以使用@AroundConstruct注释拦截类的生命周期事件(对象创建,销毁等)。
Interceptor和Servlet过滤器之间的主要区别是我们可以在WebContext之外使用Interceptor,但过滤器特定于Web应用程序。
拦截器的常见用途是记录,审计和分析。
有关更详细的介绍,您可以阅读本文。 https://abhirockzz.wordpress.com/2015/01/03/java-ee-interceptors/
在向 Controller 类发送请求之前和向响应发送请求之前,您可以将 Interceptor 用于要执行某些任务的地方。 例如:- 在这种情况下,您想在向 Controller 类发送请求之前验证身份验证令牌,您可以使用拦截器。 示例代码:
@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.
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.