一、拦截器方法
EJB3可以通过拦截器对Bean方法进行拦截和覆盖。这有些象AOP中的around。通过AOP的around方法, 可以修改被拦截方法的返回值、参数值,甚至可以取消被拦截方法的执行。EJB3的拦截器可以用在无状态 Session Bean、有状态Session Bean和消息驱动Bean(MDB)的方法中。实现拦截器的最简单的方法是使 用拦截器方法。也就是说,只要在当前的Bean中使用@AroundInvoke对某个方法进行注释(关于拦截器的 类都在javax.interceptor包中),那么这个方法就会变成拦截器方法,该拦截器方法会拦截当前Bean中 的所有方法。实现过程如下:
@Stateful public class GreeterBean implements Greeter { @AroundInvoke public Object myInterceptorMethod1(InvocationContext ic) throws Exception { System.out.println("myInterceptorMethod1:" + ic.getMethod().getName()); obj = ic.proceed(); } @AroundInvoke public Object myInterceptorMethod2(InvocationContext ic) throws Exception { System.out.println("myInterceptorMethod2:" + ic.getMethod().getName()); obj = ic.proceed(); } @Override public String greet(String name) { return "hello " + name; } }
上面的Stateful Session Bean中定义了两个拦截器方法和一个Bean方法。当客户端调用greet方法时 ,EJB容器会先调用myInterceptorMethod1方法,然后会调用myInterceptorMethod2方法,最后会调用 greet方法。使用拦截器方法时要注意如下几点:
1. 拦截器方法必须有一个返回值,返回值类型是Object。
2. 拦截器方法只能有一个参数,而且该参数类型必须是javax.interceptor.InvocationContext。
3. 只有调用InvocationContext接口的proceed方法,EJB容器才会调用下一个拦截器方法或被拦截 的Bean方法。
4. 由于proceed方法要求抛出一个Exception异常,因此,拦截器方法必须抛出一个Exception异常 ,或在拦截器方法中使用try...catch来捕捉proceed方法抛出的异常。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索exception
, bean
, 方法
, 拦截器
, 电话拦截
, 拦截
, 拦截器aspnetsetmvcstring
, jerseyspring拦截器
, 一个
, xposed拦截
, 拦截器使用
, php异常拦截
, 被拦截
angularjs_http拦截器
eclipse jboss5.1、eclipse jboss、eclipse jboss 配置、eclipse jboss 插件、eclipse安装jboss插件,以便于您获取更多的相关知识。