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