拦截器Interceptor

本文介绍了一个使用EJB(企业JavaBeans)的例子,通过SayHelloBean类实现了远程接口SayHelloRemote的功能,并利用HelloInterceptor类作为拦截器记录sayHello与sayName方法的调用情况。

具体代码如下:

 

SayHelloBean.java

package com.sias;
import com.sias.*;
import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
@Stateless
@Remote(SayHelloRemote.class)
@Local(SayHello.class)
@Interceptors(HelloInterceptor.class)
public class SayHelloBean implements SayHello, SayHelloRemote {

 public void sayHello() {
  System.out.println("Hello!");
 }

 public void sayName() {
  System.out.println("name");
 }

}

 

HelloInterceptor.java

package com.sias;
import javax.interceptor.AroundInvoke;
import javax.interceptor.InvocationContext;
public class HelloInterceptor {
@AroundInvoke
public Object log(InvocationContext ctx) throws Exception{
 System.out.println("***interceptor is running***");
   try{
    if(ctx.getMethod().getName().equals("sayHello")){
     System.out.println("sayHello()已经被调用");
    }
    if(ctx.getMethod().getName().equals("sayName")){
     System.out.println("sayName()已经被调用");
    }
    return ctx.proceed();
   }catch(Exception e){
    throw e;
   }
}
}

SayHelloRemote.java

package com.sias;

public interface SayHelloRemote {
public void sayHello();
public void sayName();
}

SayHello.java

package com.sias;
import com.sias.SayHelloRemote;

public interface SayHello extends SayHelloRemote{

}

 

 

测试代码如下:

 

。。。。。

InitialContext ctx=new InitialContext();
    SayHelloRemote sr=(SayHelloRemote)ctx.lookup("SayHelloBean/remote");
    sr.sayHello();
    sr.sayName();

。。。。。

 

运行结果如下:

23:32:46,140 INFO  [STDOUT] ***interceptor is running***
23:32:46,140 INFO  [STDOUT] sayHello()已经被调用
23:32:46,140 INFO  [STDOUT] Hello!
23:32:46,156 INFO  [STDOUT] ***interceptor is running***
23:32:46,156 INFO  [STDOUT] sayName()已经被调用
23:32:46,156 INFO  [STDOUT] name

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值