Ejb in action(六)——拦截器

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拦截器,我们这个举一个简单的例子:

前文中,我们介绍了一个购物车的例子,现在我们要统计客户端调用一次服务器方法,服务器的响应时间。

接口实现加入注解@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");
		}
	}
}

客户端再次调用时,就会显示服务器端的执行时间。

Ejb in action(六)——拦截器

时间: 2024-10-27 07:14:56

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

Struts2整体回顾 之 Action,拦截器,值栈及关联关系

一.首先看一下当我们使用Struts时,一个请求所走的流程. 二.值栈的示意图 三.一个请求中,拦截器和值栈的时序图 4.请求.值栈结合图 Struts2整体回顾 之 Action,拦截器,值栈及关联关系,布布扣,bubuko.com

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

有时项目要进行客户端请求(action)进行拦截(过滤)验证等业务,可以使用拦截器进行实现,所谓的action拦截器也没有什么的,只是写一个类,继承另一个类(System.Web.Mvc.FilterAttribute)和一个接口(System.Web.Mvc.IActionFilter),至于什么是拦截器这里就不说了,网上很多关于这方面文章. 假如现在有这样的一个需求:某个action需要登录才能进行访问,可以使用action属性拦截器进行拦截进行验证 多余的不说了直接上代码 写一个拦截器类:

struts2.1.6教程五、拦截器

在前面我们已经初步使用过拦截器,下面继续细细探讨. 1.概述strust2中的拦截器 拦截器是Struts2框架的核心,它主要完成解析请求参数.将请求参数赋值给Action属性.执行数据校验.文件上传等工作.Struts2设计的灵巧性,拦截器起了关键性的作用,当需要扩展Struts2功能时,只需要提供对应拦截器,并将它配置在Struts2容器中即可:如果不需要该功能时,也只需要取消该拦截器的配置即可.    Struts2内建了大量的拦截器,这些拦截器以name-class对的形式配置在stru

8.Struts2拦截器

1. 拦截器的概述 * 拦截器就是AOP(Aspect-Oriented Programming)的一种实现.(AOP是指用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作.) * 过滤器:过滤从客服端发送到服务器端请求的 * 拦截器:拦截对目标Action中的某些方法进行拦截 * 拦截器不能拦截JSP * 拦截到Action中某些方法 2. 拦截器和过滤器的区别 1)拦截器是基于JAVA反射机制的,而过滤器是基于函数回调的 2)过滤器依赖于Servlet容器,而拦截器不依赖于

Struts2拦截器浅解

最近在学习struts的拦截器,现在来总结一下. 1.拦截器是什么? 拦截器相当于过滤器:就是将不想要的去掉,想要的留下.拦截器抽象出一部分代码可以用来完善原来的action.同时可以减轻代码冗余,提高重用率.通俗地讲就是一张网,过滤掉不需要的沙子,留下水. 2.拦截器的作用: 拦截器可以构成特定的功能.比如权限认证.日志记录和登陆判断. 3.拦截器的原理: 其每一个Action请求都在拦截器中,每一个action可以将操作转交给下面的拦截器,也可以直接退出到界面上. 4.定义拦截器: (1)自

struts2中的拦截器

一  AOP思想: 面向切面编程的思想 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型.利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率. AOP 是一个概念,一个规范,本身并没有设定具体语言的实现,这实际

Struts2拦截器的使用 (详解)

这位仁兄的写的不错,我照抄过来了:http://www.blogjava.net/i369/articles/162407.html 如何使用struts2拦截器,或者自定义拦截器.特别注意,在使用拦截器的时候,在Action里面必须最后一定要引用struts2自带的拦截器缺省堆栈defaultStack,如下(这里我是引用了struts2自带的checkbox拦截器):<interceptor-ref name="checkbox">  <param name=&q

struts2内置拦截器和自定义拦截器详解(附源码)

一.Struts2内置拦截器 Struts2中内置类许多的拦截器,它们提供了许多Struts2的核心功能和可选的高级特 性.这些内置的拦截器在struts-default.xml中配置.只有配置了拦截器,拦截器才可以正常的工作和运行.Struts 2已经为您提供丰富多样的,功能齐全的拦截器实现.大家可以至struts2的jar包内的struts-default.xml查看关于默认的拦截器与 拦截器链的配置.内置拦截器虽然在struts2中都定义了,但是并不是都起作用的.因为并不是所有拦截器都被加

认识拦截器

认识拦截器 什么是拦截器 拦截器也是一个类 拦截器可以在Action被调用之前和之后执行代码 框架的很多核心功能是拦截器实现的 拦截器特点 拦截器自由组合,增强了灵活性.扩展性,有利于系统解耦 拦截器可以拦截Action请求 在访问的Action执行之前和执行之后执行代码实现某项功能 在哪儿使用拦截器 Struts2: 大部分功能是在拦截器中实现的 如:接收输入的参数.数据验证.文件上传.国际化等 应用程序: 需要在Action执行的前后执行特定功能时 Action执行时间统计,Action访问

转载 - Struts2 拦截器详细配置过程

出处:http://www.blogjava.net/zzzlyr/archive/2009/10/12/297998.html Struts2 拦截器详细配置过程 1:所有拦截器的超级接口Interceptor ,Action去实现这个接口; Interceptor 它其中有三个方法(init(),destroy() ,interceptor()): Init()方法:在服务器起动的时候加载一次,并且只加载一次; Destroy()方法:当拦截器销毁时执行的方法; Interceptor()方