[發明專利]一種基于動態棧的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.szxzyx.cn/pat/books/201110357781.6/1.html,轉載請聲明來源鉆瓜專利網。





