系統(tǒng)接口調(diào)用信息的獲取方法和裝置的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種系統(tǒng)接口調(diào)用信息的獲取方法和裝置。
【背景技術(shù)】
[0002]隨著計(jì)算機(jī)技術(shù)的發(fā)展,用戶可以在計(jì)算機(jī)系統(tǒng)中安裝各式各樣的應(yīng)用程序來滿足其不同的使用需求,對于各種應(yīng)用程序,獲取其使用的頻率,根據(jù)各個(gè)應(yīng)用程序的使用頻率來優(yōu)化系統(tǒng)。
[0003]目前大部分基于j2ee的程序都遵循MVCXmodel view controller模型-視圖-控制器)架構(gòu),通過軟件分層來實(shí)現(xiàn),基于此架構(gòu)搭建的應(yīng)用系統(tǒng),每一個(gè)動(dòng)作都基本對應(yīng)一個(gè)具體的業(yè)務(wù)操作,如創(chuàng)建訂單是一個(gè)單獨(dú)的動(dòng)作,如何能統(tǒng)計(jì)出每個(gè)業(yè)務(wù)操作在服務(wù)器端的調(diào)用信息,目前尚沒有很好的解決方案。
【發(fā)明內(nèi)容】
[0004]在下文中給出關(guān)于本發(fā)明的簡要概述,以便提供關(guān)于本發(fā)明的某些方面的基本理解。應(yīng)當(dāng)理解,這個(gè)概述并不是關(guān)于本發(fā)明的窮舉性概述。它并不是意圖確定本發(fā)明的關(guān)鍵或重要部分,也不是意圖限定本發(fā)明的范圍。其目的僅僅是以簡化的形式給出某些概念,以此作為稍后論述的更詳細(xì)描述的前序。
[0005]一方面,本發(fā)明提供一種系統(tǒng)接口調(diào)用信息的獲取方法,包括:對各層系統(tǒng)接口的調(diào)用請求分別進(jìn)行攔截并分別生成攔截對象;將各攔截對象根據(jù)各層調(diào)用的先后順序入棧;然后按后進(jìn)先出的順序?qū)⒍褩V械母鲾r截對象進(jìn)行出棧處理并添加出棧時(shí)刻對應(yīng)的結(jié)束時(shí)間戳;根據(jù)出棧后的各攔截對象獲取相應(yīng)各層系統(tǒng)接口的調(diào)用信息。
[0006]另一方面,本發(fā)明還提供了一種系統(tǒng)接口調(diào)用信息的獲取裝置,包括:攔截器,用于對各層系統(tǒng)接口的調(diào)用請求分別進(jìn)行攔截并分別生成攔截對象;堆棧模塊,用于將各攔截對象根據(jù)各層調(diào)用的先后順序入棧;按后進(jìn)先出的順序?qū)⒍褩V械母鲾r截對象進(jìn)行出棧處理并添加出棧時(shí)刻對應(yīng)的結(jié)束時(shí)間戳;信息獲取模塊,用于根據(jù)出棧后的各攔截對象獲取相應(yīng)的調(diào)用信息。
[0007]本發(fā)明提供的系統(tǒng)接口調(diào)用信息的獲取方法和裝置,通過攔截各層系統(tǒng)接口的調(diào)用請求并創(chuàng)建攔截對象,根據(jù)調(diào)用的先后順序控制各攔截對象的入棧,并根據(jù)各攔截對象后進(jìn)先出的順序控制各攔截對象出棧,由此獲取各層系統(tǒng)接口的調(diào)用信息??梢?,該技術(shù)方案可精確獲取所述調(diào)用信息,同時(shí)基于攔截技術(shù)和出入??刂七€可做到各層系統(tǒng)接口業(yè)務(wù)代碼的透明化,即做到精確統(tǒng)計(jì)的目的,又無需在業(yè)務(wù)代碼里到處做程序調(diào)整,實(shí)現(xiàn)方式簡單。
【附圖說明】
[0008]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0009]圖1為本發(fā)明實(shí)施例中系統(tǒng)接口調(diào)用信息的獲取方法流程圖;
[0010]圖2至圖6為本發(fā)明實(shí)施例中各攔截對象入棧和出棧示意圖;
[0011]圖7為本發(fā)明實(shí)施例中系統(tǒng)接口調(diào)用信息的獲取裝置可選的模塊結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0012]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。在本發(fā)明的一個(gè)附圖或一種實(shí)施方式中描述的元素和特征可以與一個(gè)或更多個(gè)其它附圖或?qū)嵤┓绞街惺境龅脑睾吞卣飨嘟Y(jié)合。應(yīng)當(dāng)注意,為了清楚的目的,附圖和說明中省略了與本發(fā)明無關(guān)的、本領(lǐng)域普通技術(shù)人員已知的部件和處理的表示和描述?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有付出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0013]實(shí)施例一:
[0014]如圖1所示為本發(fā)明實(shí)施例中系統(tǒng)接口調(diào)用信息的獲取方法流程圖,本發(fā)明提供了一種系統(tǒng)接口調(diào)用信息的獲取方法,包括步驟:
[0015]Sll:對各層系統(tǒng)接口的調(diào)用請求分別進(jìn)行攔截并分別生成攔截對象;
[0016]S12:將各攔截對象根據(jù)各層調(diào)用的先后順序入棧;
[0017]S13:按后進(jìn)先出的順序?qū)⒍褩V械母鲾r截對象進(jìn)行出棧處理并添加出棧時(shí)刻對應(yīng)的結(jié)束時(shí)間戳;
[0018]S14:根據(jù)出棧后的各攔截對象獲取相應(yīng)各層系統(tǒng)接口的調(diào)用信息。
[0019]在系統(tǒng)操作中每一個(gè)動(dòng)作對應(yīng)一個(gè)具體的業(yè)務(wù)操作,例如創(chuàng)建訂單等等,統(tǒng)計(jì)每個(gè)業(yè)務(wù)操作在服務(wù)器端的執(zhí)行時(shí)間等信息需要相應(yīng)的方法,本實(shí)施例提供了一種調(diào)用信息的獲取方法。本實(shí)施例提供的調(diào)用信息獲取方法通過對調(diào)用請求進(jìn)行攔截并生成攔截對象的方法,不需要在系統(tǒng)的業(yè)務(wù)代碼中進(jìn)行修改,就可以獲取到調(diào)用信息。
[0020]首先,系統(tǒng)中不同層的接口會(huì)發(fā)出調(diào)用請求,首先對不同的系統(tǒng)接口的調(diào)用請求進(jìn)行攔截并分別生成攔截對象,可選的,所述攔截對象包括相應(yīng)系統(tǒng)接口的調(diào)用請求和調(diào)用開始時(shí)間戳,即獲取對相應(yīng)系統(tǒng)接口進(jìn)行調(diào)用需要的調(diào)用請求和開始調(diào)用的時(shí)間。所述攔截并不是對所有的調(diào)用請求都進(jìn)行攔截,可選的面對各層系統(tǒng)接口的調(diào)用請求,根據(jù)預(yù)設(shè)條件選擇要攔截的指定業(yè)務(wù)操作或者剔除不需要攔截的地址。例如,統(tǒng)計(jì)用戶訪問某個(gè)鏈接的次數(shù),需要攔截對所述鏈接的訪問,對其他鏈接的訪問則不需要攔截。
[0021]對不同系統(tǒng)接口的調(diào)用請求進(jìn)行攔截并生成攔截對象,即對調(diào)用請求打上標(biāo)記,攔截對象可以在接下來的步驟中進(jìn)行比較,從而根據(jù)這些攔截對象獲取調(diào)用信息。
[0022]然后將各攔截對象根據(jù)各層調(diào)用的先后順序入棧,可選的,所述系統(tǒng)接口根據(jù)調(diào)用的先后順序分為:WEB層,業(yè)務(wù)層,數(shù)據(jù)層;在業(yè)務(wù)系統(tǒng)中,對不同層進(jìn)行調(diào)用,并且根據(jù)調(diào)用的順序入棧。
[0023]隨后根據(jù)后進(jìn)先出的順序?qū)⒍褩V械母鱾€(gè)攔截對象進(jìn)行出棧處理,即對相應(yīng)系統(tǒng)接口的調(diào)用請求和調(diào)用開始時(shí)間戳進(jìn)行出棧處理,在出棧的同時(shí)添加對應(yīng)的結(jié)束時(shí)間戳。
[0024]出棧時(shí)添加結(jié)束時(shí)間戳,與之前攔截時(shí)生成的調(diào)用開始時(shí)間戳相對應(yīng),根據(jù)獲得的時(shí)間戳獲取系統(tǒng)接口的調(diào)用信息。
[0025]最后根據(jù)出棧后的各攔截對象,所述攔截對象為對系統(tǒng)接口的調(diào)用請求,調(diào)用開始時(shí)間戳和調(diào)用結(jié)束時(shí)間戳,根據(jù)上述信息獲取相應(yīng)各層系統(tǒng)的調(diào)用信息。
[0026]可選的,所述系統(tǒng)接口調(diào)用信息的獲取方法還包括:采用異步的方式發(fā)送所述調(diào)用信息。
[0027]所述異步為一種通訊方式,雙方不需要共同的時(shí)鐘,發(fā)送方可以在任何時(shí)候進(jìn)行發(fā)送,在發(fā)送的信息中有提示接收方開始接收的信息,例如開始位,結(jié)束的時(shí)候有結(jié)束位。本發(fā)明中提到的提示接收方開始接收或結(jié)束接收消息的信號(hào)為,調(diào)用開始時(shí)間戳和調(diào)用結(jié)束時(shí)間戳。
[0028]采用異步方式發(fā)送調(diào)用信息適用于突發(fā)性傳輸,具有靈活性,適用范圍較廣,并且傳輸效果比較理想,并且統(tǒng)計(jì)不影響整個(gè)系統(tǒng)的性能。
[0029]為了清楚的描述本發(fā)明實(shí)施例,首先對本發(fā)明實(shí)施例涉及的相關(guān)技術(shù)術(shù)語做一些介紹:
[0030]hornetq是一個(gè)支持集群和多種協(xié)議,可嵌入、高性能的異步消息系統(tǒng)。
[0031]Struts2攔截器是在訪問某個(gè)Act1n或Act1n的某個(gè)方法之前或之后實(shí)施攔截。
[0032]Spring框架是一個(gè)輕量級控制反轉(zhuǎn)和面向切面的容器框架。
[0033]AOP為Aspect Oriented Programming的縮寫,意為:面向切面編程,通過預(yù)編譯方式和運(yùn)行期動(dòng)態(tài)代理實(shí)現(xiàn)程序功能的統(tǒng)一維護(hù)的一種技術(shù)。
[0034]下面不妨以本實(shí)施例系統(tǒng)接口調(diào)用信息的獲取方法在hornetq系統(tǒng)中的應(yīng)用,進(jìn)一步說明本發(fā)明的技術(shù)方案??蛇x的,本發(fā)明所述的攔截器可為Struts2攔截器。
[0035]業(yè)務(wù)系統(tǒng)通過統(tǒng)計(jì),收集客戶端程序,通過hornetq消息服務(wù)器將數(shù)據(jù)保存到監(jiān)控平臺(tái)的數(shù)據(jù)庫中,用戶通過監(jiān)控中心統(tǒng)一查看調(diào)用堆棧信息。
[0036]每個(gè)act1n基本對應(yīng)一個(gè)具體的業(yè)務(wù)操作,本實(shí)施例對act1n的統(tǒng)計(jì)采用struts〗的攔截器技術(shù)進(jìn)行實(shí)現(xiàn)的,在該攔截器中可以配置是否啟用此統(tǒng)計(jì)功能,通過在該攔截器中設(shè)置一個(gè)標(biāo)記位,所述標(biāo)記位默認(rèn)啟用,另外還在該攔截器設(shè)置了需要攔截的名單機(jī)制和不需要攔截的名單機(jī)制dnclude和exclude名單機(jī)制,即業(yè)務(wù)系統(tǒng)可以根據(jù)實(shí)際需要選擇要攔截指定的業(yè)務(wù)操作或把不需要攔截的地址剔除掉
[0037]web層以下調(diào)用業(yè)務(wù)層,業(yè)務(wù)層調(diào)用數(shù)據(jù)層統(tǒng)一使用spring框架的aop功能進(jìn)行統(tǒng)一攔截,即當(dāng)執(zhí)行該方法時(shí)記錄執(zhí)行的時(shí)間和上下文信息。
[0038]舉例來講:創(chuàng)建用戶操作
[0039]http://192.168.1.102:8080/user/createUser.act1n
[0040]該功能對應(yīng)的程序邏輯為:
[0041]CreateUserAct1n.java
[0042]---UserService.java 類的 createUser 方法
[0043]------UserDA0.java 類的 saveUser 方法
[0044]1、用戶訪問某一個(gè)業(yè)務(wù)操作鏈接(對應(yīng)一個(gè)act1n),被統(tǒng)計(jì)攔截器攔截;
[0045]2、在攔截器中記錄開始時(shí)間tl,當(dāng)前act1n的類名,方法名,并把這些信息保存在一個(gè)對象profiIeBeanTop中,保存在線程變量所持有的棧中,此時(shí)堆棧中的元素如圖2所示為:
[0046]profiIeBeanAct1nο
[0047]3、依次執(zhí)行完畢其他攔截器的邏輯后進(jìn)入具體的act1n程序中
[0048]4、CreateUserAct1n類中會(huì)調(diào)用業(yè)務(wù)邏輯處理的業(yè)務(wù)組件UserService.createUser ()方法,因?yàn)閷I(yè)務(wù)層的代碼有spring的a