国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng)的制作方法

      文檔序號:6334616閱讀:427來源:國知局

      專利名稱::基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      :本發(fā)明涉及軟件構(gòu)件化
      技術(shù)領(lǐng)域
      ,具體涉及一種基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng)。
      背景技術(shù)
      :軟件構(gòu)件是具有一定功能、可明確辨識的軟件單位,其具有良好的封裝,清晰的接口定義,明確的背景依賴,可以被獨立配置與部署。通過采用軟件構(gòu)件技術(shù),可以有效的提升軟件開發(fā)質(zhì)量,提高開發(fā)效率,使系統(tǒng)具有更高的可擴展性和可維護性?;跇?gòu)件的軟件工程已經(jīng)成為一個主流的軟件開發(fā)方法,并被廣泛用來構(gòu)建企業(yè)信息系統(tǒng)。OSGi(OpenServicesGatewayinitiative)是一種廣泛應(yīng)用的輕量級軟件基礎(chǔ)框架,為構(gòu)件化軟件的開發(fā)和運行提供了支撐環(huán)境。在OSGi中,服務(wù)通常被描述為一個Java接口,實現(xiàn)部分與相關(guān)的資源打包在一個軟件構(gòu)件中,其中,Manifest文件描述了軟件構(gòu)件信息。在這里,軟件構(gòu)件是一個物理上的JAR文件,能夠在運行時動態(tài)的添加、刪除和更新。每一個軟件構(gòu)件通過提供和調(diào)用服務(wù)接口的方式進行交互。OSGi提供了軟件構(gòu)件生命周期管理和動態(tài)依賴管理,同時,服務(wù)注冊、服務(wù)發(fā)現(xiàn)和服務(wù)綁定機制的引入大大提高了軟件的動態(tài)性。目前,大量項目,包括嵌入式設(shè)備、移動設(shè)備和應(yīng)用服務(wù)器,都在推出以O(shè)SGi作為基礎(chǔ)框架的新版本,如Eclipse3.0,JonAS5,BMW汽車控制應(yīng)用系統(tǒng)等等,OSGi技術(shù)正在被更多的企業(yè)采用,應(yīng)用在更為廣泛的領(lǐng)域。但基于OSGi的軟件構(gòu)件是一個黑盒程序單元,其源代碼對用戶是透明的,并且缺乏必要的設(shè)計和使用文檔,用戶無法了解其資源占用和行為特征等屬性,因此,如何評估軟件構(gòu)件是否符合系統(tǒng)開發(fā)的需要,整合起來的系統(tǒng)能否滿足用戶需求成為一個需要重點關(guān)注的問題。目前的軟件構(gòu)件分析大致從兩個方面考慮軟件構(gòu)件自身的資源使用情況統(tǒng)計和軟件構(gòu)件間的依賴與交互行為分析。軟件構(gòu)件間的依賴與交互行為分析工具,主要通過對源代碼或編譯后的類文件進行分析,獲得方法或包之間的依賴關(guān)系°JD印end(http://www.clarkware.com/software/JD印end.html)遍歷Java類文件目錄,并且為每個Java包生成質(zhì)量參數(shù),同時,能夠自動化的在可擴展性、可重用性和可維護性方面測量系統(tǒng)設(shè)計的質(zhì)量以有效的管理包依賴關(guān)系;DependencyExtractor(http//depfind.sourceforge.net/tasks/dependencyextractor,html)用來計算包、類、方法以及屬性間的依賴關(guān)系,結(jié)果以XML文檔形式展現(xiàn);Ignominy(L.TuuraandL.Taylor,“Ignominy-.atoolforsoftwaredependencyandmetricanalysiswithexamplesfromlargeHEPpackages,"inComputinginHighEnergyandnuclearPhysics,Beijing,China,2001.)用來分析大規(guī)模軟件系統(tǒng)中包之間的依賴關(guān)系,能夠分析Fortran,C和C++代碼依賴。但是OSGi是動態(tài)的面向服務(wù)的平臺,在運行過程中,會有新的軟件構(gòu)件以服務(wù)注冊的方式動態(tài)加入到系統(tǒng),軟件構(gòu)件也會根據(jù)應(yīng)用場景以服務(wù)調(diào)用的方式在運行中動態(tài)獲取其他軟件構(gòu)件所提供的服務(wù)。當前的軟件構(gòu)件依賴分析工具通過靜態(tài)的源代碼分析無法得這些動態(tài)產(chǎn)生的依賴關(guān)系,并且不能實時獲得運行中軟件構(gòu)件間調(diào)用情況。軟件構(gòu)件的資源使用分析工具,主要以JVM(Javavirtualmachine,Java虛擬機)或線程為單位進行監(jiān)測和資源統(tǒng)計。如,JConsole(http://Java.sun.com/j2se/l.5.O/docs/guide/management/jconsole.html)是基于JMX的監(jiān)測工具,使用JMX統(tǒng)計運行在Java平臺上應(yīng)用的內(nèi)存占用、線程使用和垃圾回收等信息;NetBeansProfiIer(http//profiler,netbeans.org/集成到了NetBean集成開發(fā)環(huán)境,能夠從線程和方法兩個角度展示運行過程中Java程序的CPU和內(nèi)存占用率等性能數(shù)據(jù);Hulaas等(J.HulaasandW.Binder,“ProgramtransformationsforportableCPUaccountingandcontrolinJava,"inProceedingsofthe2004ACMSIGPLANsymposiumonPartialevaluationandsemantics-basedprogrammanipulation,Verona,Italy,2004.)S^MWfM序轉(zhuǎn)換技術(shù)在標準JVM下對Java應(yīng)用的CPU占用量進行計算和控制,該方法采用可移植的方式修改了應(yīng)用、中間件和標準的Java運行時庫。但在OSGi平臺上,多個Java構(gòu)件在同一個Java虛擬機上協(xié)同工作,JVM隱藏了獨立的軟件構(gòu)件的資源使用情況,為以軟件構(gòu)件為單位的資源監(jiān)測帶來了挑戰(zhàn)。Miettinen等(T.Miettinen,etal.,“AMethodfortheResourceMonitoringofOSGi-basedSoftwareComponents,"inProceedingsofthe34thEuromicroConferenceSoftwareEngineeringandAdvancedApplications,2008.)將執(zhí)行線程劃分為若干分組,當軟件構(gòu)件被部署時,創(chuàng)建一個以軟件構(gòu)件名命名的線程組對象,然后創(chuàng)建一個屬于該線程組的線程,在此線程中執(zhí)行軟件構(gòu)件的啟動方法;當軟件構(gòu)件提供的服務(wù)被調(diào)用時,創(chuàng)建新的屬于該服務(wù)提供者軟件構(gòu)件對應(yīng)線程組的線程,在這個線程里完成服務(wù)調(diào)用。這樣存在三點問題第一,改變原有系統(tǒng)的執(zhí)行流程;第二,只能統(tǒng)計動態(tài)服務(wù)調(diào)用,無法統(tǒng)計靜態(tài)方法調(diào)用所占用的資源;第三,頻繁的線程切換操作會造成過多的開銷,因此,只能用于測試階段而不適用于在線實時監(jiān)測。
      發(fā)明內(nèi)容本發(fā)明的目的是克服現(xiàn)有技術(shù)中存在的問題,提出一種新的基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng)。針對現(xiàn)有技術(shù)在OSGi環(huán)境下無法在線實時獲取軟件構(gòu)件的交互行為,以及資源監(jiān)測開銷大且不準確等問題,本發(fā)明提出一種基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng),以軟件構(gòu)件為粒度,在線實時監(jiān)測軟件構(gòu)件間的交互行為及CPU、內(nèi)存等資源的占用情況,并具有不改變原有執(zhí)行流程、開銷較小等優(yōu)點。本發(fā)明所述的監(jiān)測方法包括a)OSGi平臺啟動時,一監(jiān)測點注入器為所述OSGi平臺注入代碼,該代碼使得所述OSGi平臺在軟件構(gòu)件的解析階段完成后發(fā)布該軟件構(gòu)件可供別的構(gòu)件調(diào)用的接口;b)所述軟件構(gòu)件部署在所述OSGi平臺時,所述監(jiān)測點注入器對所述軟件構(gòu)件中被加載的類中的公共方法進行操作,將所述公共方法調(diào)用的入口和出口位置作為監(jiān)測點,注入監(jiān)測代碼以標識所述公共方法調(diào)用的開始與結(jié)束;c)根據(jù)所述監(jiān)測點確定線程在其各個階段對應(yīng)的軟件構(gòu)件;d)統(tǒng)計每個構(gòu)件的資源占用情況。通過本發(fā)明方法獲得的每個構(gòu)件的資源占用情況,系統(tǒng)管理人員可以根據(jù)資源占4用是否正常來判斷構(gòu)件是否正常,從而進行可靠性分析和異常診斷。下面通過一非限制性具體實例更具體地描述本發(fā)明的方法。1.OSGi是軟件構(gòu)件運行的基礎(chǔ)平臺,用于管理軟件構(gòu)件的依賴調(diào)用和生命周期,并且記錄軟件構(gòu)件的相關(guān)信息。當有新的軟件構(gòu)件加載時,OSGi會自動完成軟件構(gòu)件中Manifest元文件的解析工作,而元文件中記錄了軟件構(gòu)件對外提供的可供調(diào)用的接口,即導(dǎo)出包。當OSGi平臺進行類加載時,監(jiān)測點注入器為其注入代碼,使得OSGi在完成元文件解析后,主動將軟件構(gòu)件對其他軟件構(gòu)件所暴露的接口匯報給監(jiān)測系統(tǒng)。從而,監(jiān)測系統(tǒng)可以及時準確的獲得OSGi平臺上軟件構(gòu)件提供的調(diào)用接口等信息。2.當軟件構(gòu)件部署到OSGi平臺時,OSGi完成對軟件構(gòu)件元文件的解析,匯報給監(jiān)測系統(tǒng)。當此軟件構(gòu)件中的類被加載時,監(jiān)測點注入器判斷該類是否在元文件中聲明所導(dǎo)出的包中,如果在則根據(jù)軟件構(gòu)件所在的類加載器為該類設(shè)置ID。并且,對類中的公共(Public)方法進行操作,包括構(gòu)造方法和成員方法,將該方法調(diào)用的入口和出口位置作為監(jiān)測點,注入監(jiān)測代碼以標識方法調(diào)用的開始與結(jié)束。3.線程是應(yīng)用的執(zhí)行單元,在OSGi中由于軟件構(gòu)件間服務(wù)與方法的調(diào)用,線程往往會在不同的軟件構(gòu)件間切換,線程與軟件構(gòu)件之間的關(guān)系在不斷變化。因此,監(jiān)測系統(tǒng)需要將每個線程的執(zhí)行過程劃分為若干階段,各階段隸屬于不同的軟件構(gòu)件。(1)對象創(chuàng)建時由于OSGi環(huán)境下,每個軟件構(gòu)件都具有獨立的類加載器,根據(jù)創(chuàng)建對象的線程所在的類以及類所屬的加載器,得到創(chuàng)建對象的軟件構(gòu)件,而后,使用軟件構(gòu)件的ID標識所創(chuàng)建的對象,其中線程對象也作為對象的一種。(2)線程在方法間轉(zhuǎn)換時當線程執(zhí)行經(jīng)過注入的監(jiān)測點時,注入的監(jiān)測代碼與中央橋接器進行通信,通知其線程在調(diào)用的方法間進行了切換。中央橋接器依據(jù)從方法到類,從類到軟件構(gòu)件的映射關(guān)系,判定方法的切換是否造成了線程在軟件構(gòu)件間的切換。如判定未發(fā)生切換,則不進行任何處理;如發(fā)生切換,則將線程標識為其所進入的軟件構(gòu)件。4.統(tǒng)計每個構(gòu)件的資源占用情況,所述資源包括CPU資源和內(nèi)存資源。(1)軟件構(gòu)件占用的CPU時間由于線程的執(zhí)行占用了CPU時間,計算各線程在軟件構(gòu)件中執(zhí)行所占用的CPU時間總和就是軟件構(gòu)件占用的CPU時間。當通過步驟3判斷得到線程在軟件構(gòu)件間切換時,則計算線程在上一個軟件構(gòu)件中的執(zhí)行時間,然后進行累加。(2)軟件構(gòu)件占用的內(nèi)存按照創(chuàng)建對象的軟件構(gòu)件的標識將對象進行分組,各組中對象占用空間的總和即是軟件構(gòu)件所占用的空間。本發(fā)明所述的監(jiān)測系統(tǒng)包括(如圖1所示)監(jiān)測點注入器,Java虛擬機監(jiān)測器,中央橋接器,和管理控制臺;所述中央橋接器分別和所述OSGi平臺、軟件構(gòu)件、Java虛擬機監(jiān)測器、監(jiān)測點注入器及管理控制臺數(shù)據(jù)連接;所述監(jiān)測點注入器分別和所述OSGi平臺及構(gòu)件數(shù)據(jù)連接;所述Java虛擬機監(jiān)測器和所述Java虛擬機數(shù)據(jù)連接;所述監(jiān)測點注入器用于對OSGi平臺進行代碼注入,使OSGi將軟件構(gòu)件對外提供的接口信息匯報給所述監(jiān)測系統(tǒng);同時將公共方法的進入和退出位置作為監(jiān)測點注入代碼;所述Java虛擬機監(jiān)測器用于標識線程的歸屬;標識對象的歸屬;和進行資源的統(tǒng)計;所述中央橋接器用于連接Java虛擬機和軟件構(gòu)件,軟件構(gòu)件通過中央橋接器實現(xiàn)對Java虛擬機的操作;所述管理控制臺用于設(shè)置監(jiān)測參數(shù)并獲得監(jiān)測信息。下面通過一非限制性具體實例對本發(fā)明系統(tǒng)作具體描述。1.監(jiān)測點注入器監(jiān)測點注入器主要用于OSGi平臺和軟件構(gòu)件中監(jiān)測點的注入,包括以下兩個功能(1)OSGi注入。對OSGi進行代碼注入,使得OSGi將軟件構(gòu)件對外提供的接口信息匯報給監(jiān)測系統(tǒng)。(2)軟件構(gòu)件注入。將方法的進入和退出位置作為監(jiān)測點,注入代碼以判斷線程執(zhí)行是否在軟件構(gòu)件間的轉(zhuǎn)移。2.JVM監(jiān)測器JVM監(jiān)測器是系統(tǒng)的核心部分,用于線程的標識和線程占用資源的統(tǒng)計,主要實現(xiàn)以下三個功能(1)標識線程的歸屬當線程創(chuàng)建和轉(zhuǎn)移時,將標識線程標識為軟件構(gòu)件的ID。(2)標識對象的歸屬當對象創(chuàng)建時,查看當前線程所在軟件構(gòu)件的ID,并將該對象標識為此ID。(3)資源的統(tǒng)計線程轉(zhuǎn)移時計算消耗的CPU資源,以及統(tǒng)計對象占用空間。3.中央橋接器中央橋接器在整個系統(tǒng)中起到橋梁作用,主要用于連接軟件構(gòu)件與JVM監(jiān)測器。通過中央橋接器,軟件構(gòu)件可以方便地實現(xiàn)對JVM進行操作,其主要實現(xiàn)以下三個功能(1)維護線程ID和軟件構(gòu)件ID之間的映射關(guān)系。維護一張表記錄線程與軟件構(gòu)件的對應(yīng)關(guān)系,以判斷是否發(fā)生線程轉(zhuǎn)移,如發(fā)生,則更新該表。(2)進行Java代碼進入Native代碼的適配操作。提供了調(diào)用接口,軟件構(gòu)件監(jiān)測點只需通過調(diào)用中央橋接器提供的接口就可以實現(xiàn)JVM的底層操作。(3)收集軟件構(gòu)件的信息。信息收集分為三個階段軟件構(gòu)件加載階段,從OSGi平臺獲取軟件構(gòu)件對外暴露的調(diào)用接口;軟件構(gòu)件調(diào)用階段,更新軟件構(gòu)件與線程的對應(yīng)關(guān)系;資源信息采集階段,將由JVM監(jiān)測器統(tǒng)計到的軟件構(gòu)件資源信息返回給管理控制臺。4.管理控制臺采用Web形式管理軟件構(gòu)件監(jiān)測系統(tǒng)。通過與中央橋接器交互,以設(shè)置監(jiān)測參數(shù)并獲得系統(tǒng)監(jiān)測信息(1)設(shè)置監(jiān)測參數(shù)。管理人員根據(jù)具體需求來調(diào)整統(tǒng)計的周期。同時,提供了用戶接口,可由管理員配置需要監(jiān)控的軟件構(gòu)件名稱以減少系統(tǒng)開銷。(2)展示軟件構(gòu)件狀態(tài)。周期性的收集軟件構(gòu)件信息,并以圖形化的方式實時動態(tài)顯示軟件構(gòu)件交互行為圖,以及各個軟件構(gòu)件的資源使用情況。和現(xiàn)有技術(shù)相比,本發(fā)明的基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng)具有以下幾個優(yōu)點(1)實時反映軟件構(gòu)件間的交互行為,而現(xiàn)有方法只能對靜態(tài)接口進行依賴分析,缺乏運行時的動態(tài)監(jiān)測。(2)以軟件構(gòu)件為粒度的監(jiān)測,通過采用軟件構(gòu)件與線程標記的方法,將現(xiàn)有方法以線程或方法為粒度的監(jiān)測上升到了軟件構(gòu)件粒度。(3)具有兼容性,本系統(tǒng)遵循OSGi標準規(guī)范開發(fā),通過監(jiān)測點注入的方法實現(xiàn)監(jiān)測,原有基于OSGi的構(gòu)件化軟件中,無需修改OSGi平臺實現(xiàn)或應(yīng)用,便可使用。(4)較低的開銷,采用線程跟蹤的方法進行監(jiān)測,僅當線程在軟件構(gòu)件間轉(zhuǎn)移時才進行統(tǒng)計和更新操作,不改變原有系統(tǒng)執(zhí)行流程,是輕量級系統(tǒng),適用于實際運行環(huán)境中。本發(fā)明的有益效果是可以獲得軟件構(gòu)件在運行時所占用的內(nèi)存和CPU資源,并展現(xiàn)出軟件構(gòu)件間的交互行為,從而為系統(tǒng)管理人員提供可靠性分析和異常診斷的依據(jù)。圖1是本發(fā)明軟件構(gòu)件監(jiān)測系統(tǒng)的結(jié)構(gòu)示意圖。圖2是軟件構(gòu)件的交互行為示意圖。圖3是監(jiān)測代碼注入的示例圖。具體實施例方式下面通過具體實施例結(jié)合附圖對本發(fā)明作進一步的說明。1.監(jiān)測點注入器的實現(xiàn)監(jiān)測點注入器實現(xiàn)代碼的注入功能從注入的方式、注入的位置和注入的內(nèi)容等三個方面進行考慮。(1)實現(xiàn)技術(shù)采用ASM作為Java字節(jié)碼操控框架,在OSGi和軟件構(gòu)件進行類加載時,實現(xiàn)類代碼的動態(tài)注入。(2)OSGi注入當軟件構(gòu)件部署到OSGi時,OSGi首先自動完成對軟件構(gòu)件Manifest元文件的解析工作,注入器在OSGi每次軟件構(gòu)件解析完成后的位置注入代碼。該段代碼的內(nèi)容是,與中央橋接器建立聯(lián)系,并將軟件構(gòu)件導(dǎo)出包的信息傳遞給中央橋接器。(3)軟件構(gòu)件注入當軟件構(gòu)件的類加載時,注入器首先從中央橋接器獲取該軟件構(gòu)件對外導(dǎo)出包的信息,而后判斷此要加載的類是否位于軟件構(gòu)件所聲明導(dǎo)出的包當中。如果是,則對該類注入代碼,使用該類所在的加載器標識此類。而后查找該類中的公共方法,在該方法的出口和入口部分插入監(jiān)測代碼,注入代碼示例見附圖3。當線程調(diào)用進入和退出該方法時,通過查看軟件構(gòu)件與線程的對應(yīng)關(guān)系判斷是否發(fā)生了線程在軟件構(gòu)件間的轉(zhuǎn)移。2.JVM監(jiān)測器的實現(xiàn)(1)實現(xiàn)技術(shù)JVM監(jiān)測器通過Java虛擬機工具接口(JavaVirtualMachineToolkitInterface,JVMTI)與JVM進行通信,同步監(jiān)控JVM的運行狀態(tài)并跟蹤Java線程狀態(tài)的切換。軟件構(gòu)件通過中央橋接器與JVM監(jiān)測器進行通信,因此,JVM監(jiān)測器對運行中的Java應(yīng)用程序是相對獨立并且透明的,不會干擾程序的正常運行。JVM監(jiān)測器以動態(tài)鏈接庫的方式存在,Java程序啟動時加載這個動態(tài)鏈接庫。(2)資源的標識JVM監(jiān)測器標識線程、對象所屬的軟件構(gòu)件。關(guān)于創(chuàng)建的對象標記,通過在Object類的默認構(gòu)造方法的入口和幾種newarray指令后注入代碼,根據(jù)創(chuàng)建對象的線程所屬的軟件構(gòu)件為對象打標記,線程的創(chuàng)建也做相同的處理;關(guān)于線程的標記,當中央橋接器發(fā)現(xiàn)軟件構(gòu)件與線程之間的對應(yīng)關(guān)系發(fā)生改變時通知JVM監(jiān)測器,JVM監(jiān)測器更改對此線程的標記。(3)資源的統(tǒng)計對于軟件構(gòu)件所占用的內(nèi)存,采用被動統(tǒng)計方式,當收到橋接器發(fā)出的資源統(tǒng)計命令時,按照對象的軟件構(gòu)件ID將對象進行分組,計算出來各組中對象占用空間的總和,即是對應(yīng)的軟件構(gòu)件所占用的內(nèi)存空間;對于軟件構(gòu)件所占用的CPU時間,采用主動統(tǒng)計方式,線程進入和退出軟件構(gòu)件時都會進行標記,這樣,當發(fā)生線程在軟件構(gòu)件間轉(zhuǎn)移時,及時統(tǒng)計兩個標記點之間線程在軟件構(gòu)件中所占用的CPU時間,并累加到對應(yīng)軟件構(gòu)件。3.中央橋接器的實現(xiàn)(1)實現(xiàn)技術(shù)標識線程在不同軟件構(gòu)件間的轉(zhuǎn)移,都要從軟件構(gòu)件的Java代碼進入JVM的Native代碼,而中央橋接器采用Java本機接口(JavaNativeInterface,JNI)將Java代碼與使用C語言編寫的代碼相集成,完成了適配功能。(2)判斷線程在軟件構(gòu)件間的轉(zhuǎn)移采用鏈表數(shù)組的數(shù)據(jù)結(jié)構(gòu)存儲各個軟件構(gòu)件的信息。每個軟件構(gòu)件作為數(shù)組的一個元素,將軟件構(gòu)件ID作為數(shù)組元素的索引,鏈表指針作為數(shù)組元素的值。由于一個軟件構(gòu)件可以被多個線程同時調(diào)用,將每個線程信息保存在一個鏈表元素中,屬于同一軟件構(gòu)件的多個線程形成鏈表,掛接到對應(yīng)的軟件構(gòu)件的數(shù)組元素上。中央橋接器收到監(jiān)測代碼的通知時,檢查軟件構(gòu)件ID與線程ID的關(guān)系是否改變,如未改變,則不作處理;發(fā)生改變,則更新鏈表數(shù)組,并交由JVM監(jiān)測器做進一步處理。(3)資源信息收集通過兩個Bean類CPUInfo、MemInfο記錄軟件構(gòu)件的資源占用情況,包括CPU和內(nèi)存占用信息。當收到管理控制臺的調(diào)用請求時,向JVM監(jiān)測器發(fā)送信息收集請求,而后將收集到的軟件構(gòu)件資源占用情況數(shù)據(jù)返回給管理控制臺。4.管理控制臺的實現(xiàn)(1)實現(xiàn)技術(shù)基于OSGi的管理控制臺是一個B/S模式的遠程管理工具,用戶可以通過瀏覽器訪問和操作。管理控制臺以O(shè)SGi平臺的軟件構(gòu)件形式實現(xiàn),管理控制臺調(diào)用OSGi的HTTP服務(wù)以支持遠程Web訪問;調(diào)用OSGi接口,暴露系統(tǒng)中各個軟件構(gòu)件的狀態(tài),可以對軟件構(gòu)件進行開始、停止和更新等操作;采用Flex技術(shù)實現(xiàn)可視化的操作界面。(2)軟件構(gòu)件交互行為圖的創(chuàng)建與更新中央橋接器記錄了線程在軟件構(gòu)件之間的轉(zhuǎn)移,由此獲得軟件構(gòu)件之間的調(diào)用行為。軟件構(gòu)件交互行為圖由下文式中表示,管理控制臺監(jiān)聽OSGi的事件中心,當有軟件構(gòu)件加入系統(tǒng)時,在圖中為其創(chuàng)建一個節(jié)點。在運行過程中,中央橋接器跟蹤線程在軟件構(gòu)件間的轉(zhuǎn)移并進行記錄。管理控制臺周期性的請求記錄信息,當線程從軟件構(gòu)件i到軟件構(gòu)件j發(fā)生轉(zhuǎn)移,即軟件構(gòu)件i調(diào)用軟件構(gòu)件j的方法,如果圖中不存在i到j(luò)的有向邊則建立該邊并設(shè)置權(quán)值。系統(tǒng)記錄最近η個周期的調(diào)用情況,每個周期左移一位,若在此周期內(nèi)被調(diào)用,則末位置1;若未被調(diào)用,則末位置O0軟件構(gòu)件交互行為圖的描述見下式,同時可參見圖2所示。G={N,E}N=Is1,s2,.··,Si,.··,sk},k=|N|,i=1,2,···,kE=IeijI,0<i,j^k,i^jejj=Hi1Hi2...mp...mn,Hii=0|18其中,G為軟件構(gòu)件交互行為圖,N為軟件構(gòu)件的集合,E為軟件構(gòu)件交互行為集合,η,為軟件構(gòu)件,k為軟件構(gòu)件數(shù)量,eiJ為軟件構(gòu)件i調(diào)用軟件構(gòu)件j,η為統(tǒng)計的采樣周期總數(shù),mp=1表示第ρ個采樣周期服務(wù)i調(diào)用服務(wù)j。權(quán)利要求一種基于OSGi的軟件構(gòu)件監(jiān)測方法,所述方法包括a)OSGi平臺啟動時,一監(jiān)測點注入器為所述OSGi平臺注入代碼,該代碼使得所述OSGi平臺在軟件構(gòu)件的解析階段完成后發(fā)布所述軟件構(gòu)件可供其他軟件構(gòu)件調(diào)用的接口;b)所述軟件構(gòu)件部署在所述OSGi平臺時,所述監(jiān)測點注入器對所述軟件構(gòu)件中被加載的類中的公共方法進行操作,將所述公共方法調(diào)用的入口和出口位置作為監(jiān)測點,注入監(jiān)測代碼以標識所述公共方法調(diào)用的開始與結(jié)束;c)根據(jù)所述監(jiān)測點確定線程在其各個階段對應(yīng)的軟件構(gòu)件;d)統(tǒng)計每個構(gòu)件的資源占用情況。2.如權(quán)利要求1所述的基于OSGi的軟件構(gòu)件監(jiān)測方法,其特征在于,所述公共方法包括構(gòu)造方法和成員方法。3.如權(quán)利要求1所述的基于OSGi的軟件構(gòu)件監(jiān)測方法,其特征在于,所述資源包括CPU資源和內(nèi)存資源。4.如權(quán)利要求3所述的基于OSGi的軟件構(gòu)件監(jiān)測方法,其特征在于,每個構(gòu)件的CPU資源的占用情況按下列方法統(tǒng)計以各個線程在所述軟件構(gòu)件中執(zhí)行時所占用的CPU時間的總和作為所述軟件構(gòu)件所占用的CPU資源。5.如權(quán)利要求3所述的基于OSGi的軟件構(gòu)件監(jiān)測方法,其特征在于,每個構(gòu)件的內(nèi)存資源的占用情況按下列方法統(tǒng)計按照創(chuàng)建對象的軟件構(gòu)件的標識將對象進行分組,以各組中對象占用的內(nèi)存空間的總和作為所述軟件構(gòu)件所占用的內(nèi)存資源。6.一種基于OSGi的軟件構(gòu)件監(jiān)測系統(tǒng),所述系統(tǒng)包括監(jiān)測點注入器,Java虛擬機監(jiān)測器,中央橋接器,和管理控制臺;所述中央橋接器分別和所述OSGi平臺、軟件構(gòu)件、Java虛擬機監(jiān)測器、監(jiān)測點注入器及管理控制臺數(shù)據(jù)連接;所述監(jiān)測點注入器分別和所述OSGi平臺及軟件構(gòu)件數(shù)據(jù)連接;所述Java虛擬機監(jiān)測器和Java虛擬機數(shù)據(jù)連接;所述監(jiān)測點注入器用于對OSGi進行代碼注入,使OSGi將軟件構(gòu)件對外提供的接口信息匯報給所述監(jiān)測系統(tǒng);同時將公共方法的進入和退出位置作為監(jiān)測點注入代碼;所述Java虛擬機監(jiān)測器用于標識線程的歸屬;標識對象的歸屬;和進行資源的統(tǒng)計;所述中央橋接器用于連接Java虛擬機和軟件構(gòu)件,軟件構(gòu)件通過中央橋接器實現(xiàn)對Java虛擬機的操作;所述管理控制臺用于設(shè)置監(jiān)測參數(shù)并獲得監(jiān)測信息。全文摘要本發(fā)明公開了一種基于OSGi的軟件構(gòu)件監(jiān)測方法與系統(tǒng),屬于軟件構(gòu)件化
      技術(shù)領(lǐng)域
      。本發(fā)明基于以下方案a)OSGi平臺啟動時,一監(jiān)測點注入器為所述OSGi平臺注入代碼,該代碼使得所述OSGi平臺在軟件構(gòu)件的解析階段完成后發(fā)布所述軟件構(gòu)件可供其他軟件構(gòu)件調(diào)用的接口;b)軟件構(gòu)件部署在OSGi平臺時,監(jiān)測點注入器對軟件構(gòu)件中被加載的類中的公共方法進行操作,將公共方法調(diào)用的入口和出口位置作為監(jiān)測點,注入監(jiān)測代碼以標識公共方法調(diào)用的開始與結(jié)束;c)根據(jù)所述監(jiān)測點確定線程在其各個階段對應(yīng)的軟件構(gòu)件;d)統(tǒng)計每個構(gòu)件的資源占用情況。本發(fā)明可用于軟件分析等領(lǐng)域。文檔編號G06F11/36GK101980175SQ20101052332公開日2011年2月23日申請日期2010年10月22日優(yōu)先權(quán)日2010年10月22日發(fā)明者張文博,朱鑫,王燾,鐘華,魏峻申請人:中國科學(xué)院軟件研究所
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1