拦截器可以拦截Session Bean和Message-Driven Bean的方法调用或生命周期事件。拦截器用于封装应用的公共行为,是这些行为和业务逻辑分离。
拦截器可以是同一个bean类中的方法或者是一个外部类。
@Interceptor注释指定一个或者多个在外部类中定义的拦截器,多个拦截器之间用逗号分隔。如果只需要对某一个方法进行拦截,可以在方法上定义拦截器。
package com.manfred.ejb.impl;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
import com.manfred.ejb.HelloChina;
import com.manfred.ejb.HelloChinaRemot;
@Stateless
@Remote({ HelloChinaRemot.class })
@Local({ HelloChina.class })
@Interceptors({ HelloInterceptor.class })
public class HelloChinaBean implements HelloChinaRemot {
public String sayHello(String name) {
return name + "说,你好!中国";
}
public String Myname() {
return "Manfred Shuai";
}
}