ejb3 小结3

11 篇文章 0 订阅
5 篇文章 0 订阅

  这次小结下拦截器

 

接口

import javax.ejb.Remote;

@Remote
public interface IMan {
 String getName();
 void qq();
 void mm();
 String sayHelp();
}

 

实现:
  

import javax.ejb.Stateful;
import javax.interceptor.Interceptors;

/**
 * 具有聊QQ和泡MM以及求救三个行为的人对象,还有一个用户名属性。
 * @author BeanSoft
 */
@Stateful
@Interceptors({FBI.class})
public class Man implements IMan {
 private String name = "BeanSoft";
 
 public void qq() {
  System.out.println("我在聊QQ");
 }
 
 public void mm() {
  System.out.println("我在泡MM");
 }
 
 public String sayHelp() {
  return "救我,我是" + getName();
 }

 public String getName() {
  return name;
 }
}

public class FBI {
 @AroundInvoke
 public Object before(InvocationContext ctx) throws Exception {
  Man man = (Man)ctx.getTarget();
  System.err.println("FBI 发现" + man.getName() + "即将正在进行 " +
    ctx.getMethod().getName() + " 活动。");
  // 禁止张三泡MM
  if(ctx.getMethod().getName().equals("mm")) {
   System.err.println("FBI 将阻止 " + man.getName() + " 泡MM。");
  } else if(ctx.getMethod().getName().equals("sayHelp")) {
   System.err.println("FBI 将欺骗 " + man.getName() + " 的朋友告诉他们他很好。");
   return "我是 " + man.getName() + " ,我现在过的很好。";
  } else {
   // proceed() 方法将使原来的方法能够继续执行
   Object object = ctx.proceed();
   System.err.println("FBI 发现" + man.getName() + "已经完成了 " +
     ctx.getMethod().getName() + " 活动。");
  
   return object;
  }
  return null;
 }

JSP页面的拦截测试:
  <%
 javax.naming.InitialContext ctx = new javax.naming.InitialContext();
 interceptor.IMan man = (interceptor.IMan) ctx.lookup("Man/remote");
 man.qq();
 man.mm();
 System.out.println(man.sayHelp());
%>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值