Ejb拦截器可以监听程序中的一个或全部方法。与Struts2中拦截器同名,并且他们都可以实现切面式服务。同一时候也与Spring中的AOP技术类似。

不同的是struts2的拦截器的实现原理是一层一层的拦截器包住一个action,拦截Action请求,在自己的拦截器里面自己定义内容。

Struts2中的拦截器能够说是个过滤器。把不想要或不想显示的内容过滤掉。拦截器能够抽象出一部分代码用来完好原来的Action,同一时候能够减轻代码冗余,提高重用率。如一些登录验证、权限限制等。

Spring的两大主要功能就是IoC与AOP。然而Spring 中 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。

因此,AOP 代理能够直接使用容器中的其它 Bean 实例作为目标,这样的关系可由 IoC 容器的依赖注入提供。Spring 默认使用 Java 动态代理来创建 AOP 代理, 这样就能够为不论什么接口实例创建代理了。当须要代理的类不是代理接口的时候。
Spring 自己主动会切换为使用 CGLIB 代理,也可强制使用 CGLIB。

Spring的AOP应用:採用AOP+log4j记录项目日志

然而在分布式项目中,我们无法使用Spring的AOP做到拦截分布式请求。

採用Ejb的分布式业务,我们就须要使用Ejb的拦截器了。同非常多面向切面的技术一样。Ejb拦截器相同可以完毕日志、权限、事务、异常捕获等功能。

在我们gxpt项目中。应用了EJb的拦截器加入缓存:blog.csdn.net/wzwenhuan/article/details/24742039

为了方便大家更加清晰的掌握Ejb拦截器,我们这个举一个简单的样例:

前文中,我们介绍了一个购物车的样例,如今我们要统计client调用一次server方法,server的响应时间。

接口实现增加注解@Interceptors:

@Remote
@Stateful
@Interceptors({MyInterceptor.class})
public class StatefulSessionBeanImpl implements IStatefulSessionBean {
}

拦截器:

package com.lzq.interceptor;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class MyInterceptor {
@AroundInvoke
public Object log(InvocationContext ctx) throws Exception {
long start = System.currentTimeMillis();
try {
if (ctx.getMethod().getName().equals("list")) {
System.out.println("list()已经被调用");
}
return ctx.proceed();
} catch (Exception e) {
throw e;
}finally{
long time =System.currentTimeMillis()-start;
System.out.println("用时:"+time+"ms");
}
}
}

client再次调用时,就会显示server端的运行时间。

Ejb in action(六)——拦截器的更多相关文章

  1. struts2的总体回想(ACTION、拦截器、值栈、OGNL表达式、ModelDriven方案等)

    ValueStack:struts2的一个存放数据的数据结构(核心) ValueStack大致能够理解为:由Map和对象栈组成 ValueStack作用范围:一个请求,用它来取代request的作用域 ...

  2. Springmvc入门基础(六) ---拦截器应用demo

    1.拦截器定义 Spring Web MVC 的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理. 2.拦截器demo demo需求: 拦截用户请求,判断用 ...

  3. SpringMVC 学习笔记(六)拦截器

    5.1.处理器拦截器简介 Spring Web MVC的处理器拦截器(如无特殊说明,下文所说的拦截器即处理器拦截器) 类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理. ...

  4. ASP.NET MVC的Action拦截器(过滤器)ActionFilter

    有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.Filter ...

  5. 六 Struts 拦截器、OGNL表达式

    一.OGNL表达式1.概念:是表达式语言,专门用来访问对象取值用的.2.对比EL表达式使用场景: A.EL主要用在web的jsp页面取值 B.OGNL适用以下环境 1.java程序中 2.在页面使用( ...

  6. struts2.1.6教程五、拦截器

    在前面我们已经初步使用过拦截器,下面继续细细探讨. 1.概述strust2中的拦截器 拦截器是Struts2框架的核心,它主要完成解析请求参数.将请求参数赋值给Action属性.执行数据校验.文件上传 ...

  7. Struts2拦截器的使用 (详解)

    Struts2拦截器的使用 (详解) 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈default ...

  8. Struts2学习笔记(拦截器配置添加)

    一.拦截器工作原理: 根据Struts2的工作原理图,拦截器在action执行前进行顺序调用,之后执行Action并返回结果字符串,再逆序调用拦截器.(结构类似递归方式...)大部分时候,拦截器方法都 ...

  9. yii2 [行为] behaviors 拦截器

    yii2 拦截器 在控制器中可以自定义对action的拦截器,拦截器需要继承 \yii\base\ActionFilter 参考代码: class BaseUserAuthorizeFilter ex ...

  10. Struts2笔记——自定义拦截器

    需要两个步骤,自定义类实现拦截器接口和在struts.xml注册拦截器 =============================== 1.自定义类实现com.opensymphony.xwork2. ...

随机推荐

  1. Good Bye 2017

    太菜了啊,一不小心就goodbye rating了 A. New Year and Counting Cards time limit per test 1 second memory limit p ...

  2. learn资料

    老陈的CSDN博客: http://blog.csdn.net/qq_35587839 1.memcache 和 memcached的区别:http://www.phpweblog.net/fuyon ...

  3. C++之Effective STL学习笔记Item14

    使用reserve来避免不必要的重新分配! The reserve member function allows you to minimize the number ofreallocations ...

  4. 用Javascript实现图片的缓慢缩放效果

    <body> <!--页面布局:一张图片两个按钮--> <div style = "width:400px;margin:0 auto"> &l ...

  5. Node.js 文件输入

    最近在尝试用 JavaScript (Node.js) 写题.为此,特地看了 ECMAScript 2017 Language Specification(大雾).写题一般是从文件输入,确切地说是,将 ...

  6. BZOJ4816 [Sdoi2017]数字表格 【莫比乌斯反演】

    题目 Doris刚刚学习了fibonacci数列.用f[i]表示数列的第i项,那么 f[0]=0 f[1]=1 f[n]=f[n-1]+f[n-2],n>=2 Doris用老师的超级计算机生成了 ...

  7. java面试题之BeanFactory和FactoryBean的区别

    BeanFactory是个Factory,也就是IOC容器或对象工厂:FactoryBean是个Bean.在Spring中,所有的Bean都是由BeanFactory(也就是IOC容器)来进行管理的. ...

  8. element-ui复合型输入框的显示问题

    按照官方文档那样发现,最左边的选择器里面的字显示不出来,解决方法是在为el-select设置宽度,就可以正常显示了

  9. 高阶函数之函数柯里化function currying

    var cost = (function(){    var args = [];    return function(){        if(arguments.length === 0){   ...

  10. 编译 Android 版本的 Opus 音频编解码库的方法

    Opus 音频编解码库是 Speex 音频编解码库的下一代版本,从编解码性能以及质量上来讲都有了长足的进步.Opus 的编译非常简单,但是官方并未给出详细的 Android 版本编译指南,查找了大量资 ...