[发明专利]一种基于动态栈的EJB3 容器AOP 实现方法有效
申请号: | 201110357781.6 | 申请日: | 2011-11-11 |
公开(公告)号: | CN102508668A | 公开(公告)日: | 2012-06-20 |
发明(设计)人: | 齐勇;王培培;杨涛;郝莹耀 | 申请(专利权)人: | 西安交通大学 |
主分类号: | G06F9/44 | 分类号: | G06F9/44;G06F9/45 |
代理公司: | 西安通大专利代理有限责任公司 61200 | 代理人: | 徐文权 |
地址: | 710049 *** | 国省代码: | 陕西;61 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 动态 ejb3 容器 aop 实现 方法 | ||
1.一种基于动态栈的EJB3容器AOP实现方法,其特征在于:根据拦截器方法作用和性质的不同,将拦截器方法分为系统级别拦截器方法和业务逻辑级别拦截器方法两种类型,分别采用预编译和动态栈的方式处理EJB3相应的拦截器方法;
1)预编译方式处理系统级别拦截器方法:
在业务方法的执行前和执行后插入相应的预处理和后处理系统级别拦截器方法调用步骤,完成系统功能方法和业务逻辑方法的分离和拦截;
向上述调用步骤提供统一的数据接口,通过配置文件的方式指明需要使用的系统功能方法及其调用次序,结合EJB3容器提供的系统级别拦截器功能执行的先后次序,利用反射机制将这些方法依次入栈和出栈,通过弹栈的方式依次执行位于栈顶的方法;
2)动态栈方式处理业务逻辑级别拦截器方法:
拦截到业务方法调用之后,根据解析的EJB的元数据中相关的自定义拦截器类和方法的信息,按照要求的顺序将业务逻辑级别拦截器方法依次入栈;执行时,首先弹出栈顶元素的拦截器方法,将方法栈和业务方法的信息封装成一个调用上下文InvocationContext传递给第一个执行的业务逻辑级别拦截器方法;
每个业务逻辑级别拦截器方法体都分为三步:首先是业务方法执行前的预处理;其次是执行后续的业务逻辑级别拦截器方法或者业务方法;最后是业务方法执行后的后处理;
执行后续的拦截器方法之后,当前拦截器方法继续执行后处理工作;这样就会在JVM中形成一个调用拦截器方法的动态栈,这个栈在业务方法最终执行前会不断添加新的调用拦截器方法,并在业务方法执行完毕后不断有调用拦截器方法返回,直至返回到步骤1)中拦截到业务方法调用请求的地方。
2.根据权利要求1所述的方法,其特征在于:具体执行后续的业务逻辑级别拦截器方法或者业务方法的步骤为:若从上述InvocationContext判断得到栈不为空,则弹出栈顶拦截器方法作为接下来要执行的拦截器方法,并将弹出栈顶拦截器方法的栈和业务方法的信息重新封装成InvocationContext传给下一个拦截器方法,最后通过反射机制调用下一个拦截器方法;否则,栈为空,从InvocationContext获取业务方法,然后执行该业务方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于西安交通大学,未经西安交通大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201110357781.6/1.html,转载请声明来源钻瓜专利网。