專利名稱:構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機軟件領(lǐng)域,特別涉及構(gòu)件化軟件系統(tǒng)領(lǐng)域,具體是指一種構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法。
背景技術(shù):
隨著現(xiàn)代社會科學(xué)技術(shù)的發(fā)展,計算機系統(tǒng)已經(jīng)成為各行各業(yè)所不可缺少的工具,而在其中起著核心作用的,則是計算機軟件系統(tǒng)。隨著軟件系統(tǒng)在各行各業(yè)的日益滲透,商業(yè)系統(tǒng)的日益龐大,其自身的問題也是越來越嚴(yán)重?,F(xiàn)在的一個企業(yè)應(yīng)用,常常會涉及企業(yè)的每一個部分,會由幾十人編寫幾十萬到幾百萬行代碼來完成。另一方面,現(xiàn)代企業(yè)是在一個不斷變化的動態(tài)環(huán)境中生存和發(fā)展的,因此,企業(yè)應(yīng)用就需要不斷地維護——即部分地改寫一些現(xiàn)有軟件。由幾十萬上百萬的代碼式變化因子,組成的不斷變化的系統(tǒng),其復(fù)雜度是人類歷史上沒有見過的。軟件的安全性和質(zhì)量可靠性,常常成為現(xiàn)代無所不在、無所不能的信息化系統(tǒng)的一個嚴(yán)重問題。
構(gòu)件技術(shù)整合了傳統(tǒng)的構(gòu)件技術(shù)、模型驅(qū)動技術(shù)和面向服務(wù)技術(shù),是解決現(xiàn)有軟件系統(tǒng)結(jié)構(gòu)弊端的一種有效手段。所謂構(gòu)件,是指某種自成一體、并有一個(或一組)清晰接口的軟件。同時,構(gòu)件還應(yīng)具有清晰的運行時和上線內(nèi)涵。也就是說,該構(gòu)件具備可供運行時訪問的接口;并且,在軟件開發(fā)生命周期的某個時間點,該構(gòu)件可獨立交付和安裝。另外,一個構(gòu)件還能方便地跟其他構(gòu)件合并或組合,從而提供有用的功能——通常情況下,單個構(gòu)件只有跟別的構(gòu)件協(xié)同工作才能達(dá)到其功效。
同時,目前已經(jīng)出現(xiàn)了JSR-45(Debugging Support for Other Languages為其它類型語言提供的調(diào)試支持)規(guī)范,它是專門為那些非Java語言寫成、卻需要編譯成Java代碼并運行在JVM中的程序而設(shè)計的,提供了一個進行調(diào)試的標(biāo)準(zhǔn)機制。對于基于擴展標(biāo)記語言的構(gòu)件技術(shù)來說,JSR-45規(guī)范為構(gòu)件調(diào)試提供了支持。構(gòu)件編譯到Java應(yīng)用服務(wù)器之后,被Java應(yīng)用服務(wù)器編譯成Java代碼,同時生成一份構(gòu)件文件名和圖元ID與Java行號之間的對應(yīng)表(SMAP),而對于JSP構(gòu)件,SMAP對應(yīng)表則是反映了JSP文件名和行號與JAVA行號之間的對應(yīng)關(guān)系。
在構(gòu)件開發(fā)的整個生命周期中,調(diào)試是重要的一個階段,但是,現(xiàn)有技術(shù)中并沒有非常方便直觀的集成化構(gòu)件調(diào)試手段,特別是對于采用非Java語言編寫的構(gòu)件來說,缺乏方便通用、直觀靈活的調(diào)試工具,從而使得錯誤和缺陷經(jīng)常發(fā)生,軟件整體的開發(fā)效率無法得到根本的改善,同時這樣的構(gòu)件軟件開發(fā)中存在著開發(fā)、實施、維護成本過高,管理不便的問題。在這種情況下,便給現(xiàn)代計算機軟件構(gòu)件化程序設(shè)計及調(diào)試技術(shù)的發(fā)展帶來了一定的阻礙。
發(fā)明內(nèi)容
本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)中的缺點,提供一種能夠?qū)Ψ荍ava語言的構(gòu)件提供調(diào)試支持、直觀形象、使用快捷方便、運行效率較高、系統(tǒng)性能穩(wěn)定可靠、適用范圍較為廣泛的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法。
為了實現(xiàn)上述的目的,本發(fā)明的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法如下該構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,包括圖形化構(gòu)件調(diào)試平臺和通過計算機通信網(wǎng)絡(luò)相連接的后臺Java應(yīng)用服務(wù)器,其主要特點是,所述的方法包括斷點配置操作和運行時斷點源代碼查找定位操作,所述的斷點配置操作包括以下步驟(1)系統(tǒng)進行初始化操作;(2)根據(jù)用戶的操作,圖形化構(gòu)件調(diào)試平臺創(chuàng)建構(gòu)件的斷點標(biāo)記,并注冊在斷點管理器中;(3)該調(diào)試平臺判斷該斷點為圖元斷點還是JSP斷點;(4)如果該斷點為圖元斷點,則生成對應(yīng)的圖元斷點信息并記錄在配置文件中,并通過計算機通信網(wǎng)絡(luò)進行通知后臺Java應(yīng)用服務(wù)器更新圖元斷點狀態(tài)信息的處理操作;(5)如果該斷點為JSP斷點,則所述的斷點管理器生成對應(yīng)的斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器更新斷點狀態(tài)信息;所述的運行時斷點源代碼查找定位操作包括以下步驟(1)將構(gòu)件部署在后臺Java應(yīng)用服務(wù)器上;(2)該應(yīng)用服務(wù)器判斷該構(gòu)件是符合XML規(guī)范并由圖元構(gòu)成的展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,還是符合JSP規(guī)范的頁面構(gòu)件;(3)如果該構(gòu)件為展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系;(4)該應(yīng)用服務(wù)器根據(jù)所述的斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點;(5)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的圖元斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺;(6)圖形化構(gòu)件調(diào)試平臺根據(jù)該圖元斷點信息進行圖元斷點的展現(xiàn)操作;(7)如果該構(gòu)件為頁面構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系;(8)系統(tǒng)判斷應(yīng)用服務(wù)器的類型,并根據(jù)相應(yīng)類型和斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點;(9)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的JSP斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺;(10)圖形化構(gòu)件調(diào)試平臺根據(jù)該JSP斷點信息進行JSP斷點的展現(xiàn)操作。
所述的圖元斷點信息格式為項目名稱.包名稱.構(gòu)件文件夾名稱.構(gòu)件文件名稱.擴展名稱.圖元標(biāo)識ID=斷點狀態(tài),其中,斷點狀態(tài)為“設(shè)置”或者“取消”。
所述的通知后臺Java應(yīng)用服務(wù)器更新圖元斷點狀態(tài)信息的處理操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺和后臺Java應(yīng)用服務(wù)器之間建立socket通信連接;(2)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動過程中,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“加載”請求,將所述的圖元斷點狀態(tài)信息送至該應(yīng)用服務(wù)器上;(3)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動完畢,則判斷該圖元斷點信息中的斷點狀態(tài)是“設(shè)置”還是“取消”;(4)如果是“設(shè)置”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“添加”請求,該應(yīng)用服務(wù)器讀取配置文件并添加圖元斷點狀態(tài)信息;(5)如果是“取消”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“刪除”請求,該應(yīng)用服務(wù)器讀取配置文件并更新圖元斷點狀態(tài)信息。
所述的“添加”請求和“刪除”請求均為HTTP請求。
所述的斷點管理器通知后臺Java應(yīng)用服務(wù)器更新JSP斷點狀態(tài)信息為斷點管理器生成對應(yīng)的JSP斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器上的Java虛擬機JVM更新斷點狀態(tài)信息。
所述的應(yīng)用服務(wù)器為該展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件生成對應(yīng)的Java代碼并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系包括以下步驟(1)應(yīng)用服務(wù)器為該構(gòu)件生成Java代碼,且其中Java方法與該構(gòu)件中的圖元相對應(yīng);(2)對上述Java代碼進行編譯生成class文件;
(3)應(yīng)用服務(wù)器生成構(gòu)件文件名、圖元標(biāo)識ID與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP;(4)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中。
所述的對應(yīng)關(guān)系表SMAP的格式為圖元標(biāo)識ID#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量。
所述的應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的圖元斷點信息并傳送至圖形化構(gòu)件調(diào)試平臺包括以下步驟(1)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(2)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)圖元斷點的構(gòu)件文件名與圖元標(biāo)識ID;(3)將構(gòu)件文件名、圖元標(biāo)識ID及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺。
所述的圖形化構(gòu)件調(diào)試平臺根據(jù)該圖元斷點信息進行圖元斷點的展現(xiàn)操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(2)根據(jù)所述的構(gòu)件文件名和圖元ID定位到構(gòu)件的圖元斷點;(3)對該圖元斷點進行渲染顯示處理。
所述的應(yīng)用服務(wù)器為該頁面構(gòu)件生成對應(yīng)的Java代碼并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系包括以下步驟(1)應(yīng)用服務(wù)器為該構(gòu)件的JSP代碼生成Java代碼;(2)對上述Java代碼進行編譯生成class文件;(3)應(yīng)用服務(wù)器生成構(gòu)件JSP文件名、JSP代碼的行號與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP;(4)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中。
所述的對應(yīng)關(guān)系表SMAP的格式為JSP代碼行號#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量。
所述的應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的JSP斷點信息并傳送至圖形化構(gòu)件調(diào)試平臺包括以下步驟(1)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(2)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)JSP斷點的JSP文件名與JSP代碼的行號;
(3)將JSP文件名、JSP代碼的行號及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺。
所述的圖形化構(gòu)件調(diào)試平臺根據(jù)該JSP斷點信息進行JSP斷點的展現(xiàn)操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(2)根據(jù)所述的JSP文件名和JSP代碼的行號定位到構(gòu)件的JSP斷點;(3)顯示該JSP斷點處的代碼信息。
所述的判斷應(yīng)用服務(wù)器的類型為通過應(yīng)用服務(wù)器啟動Java虛擬機JVM時的目標(biāo)字符串的名稱來判斷應(yīng)用服務(wù)器類型。
采用了該發(fā)明的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,由于在圖形化構(gòu)件調(diào)試平臺中根據(jù)用戶操作分別對圖元斷點和JSP斷點進行記錄,并通過計算機通信網(wǎng)絡(luò)將相應(yīng)的斷點狀態(tài)信息通知給后臺Java應(yīng)用服務(wù)器,該應(yīng)用服務(wù)器為該構(gòu)件生成相對應(yīng)的Java代碼,并建立該構(gòu)件與該Java代碼之間的對應(yīng)關(guān)系,然后在該Java代碼中配置相應(yīng)的斷點,當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺,最后圖形化構(gòu)件調(diào)試平臺根據(jù)該斷點信息進行斷點的展現(xiàn)操作,從而實現(xiàn)了非Java語言的構(gòu)件的基于斷點的圖形化集成環(huán)境調(diào)試,增強了調(diào)試的直觀效果,提高了調(diào)試的效率,不僅操作簡單形象,而且快捷方便,整個調(diào)試環(huán)境的運行效率較高,系統(tǒng)性能穩(wěn)定可靠,降低了開發(fā)維護的成本;同時增強了系統(tǒng)可移植性和可擴展性;不僅如此,該方法還能夠快速回應(yīng)業(yè)務(wù)需求的變化和技術(shù)變化,能夠支撐建立高度模塊化而且又高度整合的軟件系統(tǒng),適用范圍較為廣泛,為計算機構(gòu)件化軟件技術(shù)的進一步發(fā)展打下了堅實的基礎(chǔ)。
圖1為本發(fā)明的業(yè)務(wù)構(gòu)件實現(xiàn)示意圖。
圖2為本發(fā)明的展現(xiàn)構(gòu)件實現(xiàn)示意圖。
圖3為本發(fā)明的頁面構(gòu)件實現(xiàn)示意圖。
圖4為本發(fā)明的Eclipse調(diào)試框架中的啟動框架模型的類圖。
圖5為本發(fā)明的Eclipse調(diào)試框架中的調(diào)試模塊模型的類圖。
圖6為本發(fā)明的Eclipse調(diào)試框架中的斷點模型的類圖。
圖7為本發(fā)明的Eclipse環(huán)境下展現(xiàn)構(gòu)件test.prg中的各圖元標(biāo)識示意圖。
具體實施例方式
為了能夠更清楚地理解本發(fā)明的技術(shù)內(nèi)容,特舉以下實施例詳細(xì)說明。
在設(shè)計JSP的構(gòu)件中,通常包括業(yè)務(wù)構(gòu)件、展現(xiàn)構(gòu)件以及頁面構(gòu)件。
●業(yè)務(wù)構(gòu)件——用于完成多個運算邏輯的邏輯流程的相關(guān)構(gòu)件稱為業(yè)務(wù)構(gòu)件,是通過EOS開發(fā)環(huán)境開發(fā)的多個運算邏輯的圖形化邏輯流程,請參閱圖1所示。
■依賴接口—依賴運算構(gòu)件與業(yè)務(wù)構(gòu)件■提供接口—對特定業(yè)務(wù)進行操作的業(yè)務(wù)服務(wù),比如客戶管理類,會提供對客戶進行管理的多個業(yè)務(wù)服務(wù)接口●展現(xiàn)構(gòu)件——用于控制業(yè)務(wù)流轉(zhuǎn)與頁面交互的構(gòu)件稱為展現(xiàn)構(gòu)件,展現(xiàn)構(gòu)件是通過EOS開發(fā)環(huán)境開發(fā)的圖形化組裝業(yè)務(wù)構(gòu)件、頁面構(gòu)件,來表達(dá)一個完整的功能,請參閱圖2所示。
■依賴接口—依賴業(yè)務(wù)構(gòu)件,頁面構(gòu)件,展現(xiàn)構(gòu)件自身■提供接口—提供功能級服務(wù)接口,可以完成一組完整的功能操作。
●頁面構(gòu)件——用于完成用戶交互界面生成及頁面集成的相關(guān)構(gòu)件稱為頁面構(gòu)件,頁面構(gòu)件可以是標(biāo)準(zhǔn)J2EE展現(xiàn)層的構(gòu)件,如Jsp,Tag等,請參閱圖3所示。
■依賴接口—依賴展現(xiàn)構(gòu)件■提供接口—提供一組頁面展現(xiàn)服務(wù)對于Eclipse調(diào)試框架包括以下幾個基本模塊(1)啟動框架(Launch Framework)圖4表示Launch Framework中的模型類圖,其中●Launch configuration types——可用的Launch類型●Launch configurations——Launch方式和內(nèi)容的描述●Launch manager——負(fù)責(zé)存儲Launch類型,配置及Launch對象●Launch delegates——執(zhí)行Launch●Launch objects——Launched process進程/debug targets目標(biāo)的容器●Tab groups——編輯Launch配置信息的UI界面(2)調(diào)試模塊(Debug Model)圖5表示Debug Model的模型類圖,其中●Debug Model Elements——被調(diào)試的程序元素●Capabilities——對stepping、resuming、terminating的支持●Debug Events——在執(zhí)行目標(biāo)或進程時發(fā)生的事件●Views——顯示調(diào)試會話信息的視圖-threads、frames、variables等
●Actions——與被調(diào)試程序之間交互動作的菜單-step、resume等●Debug Model Presentation——為debug model elements提供標(biāo)簽和圖片(3)斷點(Breakpoint)圖6表示斷點模型的類圖,斷點Breakpoint是在某位置或者滿足某種條件下掛起(suspend)程序的一種方式。斷點模型提供Add、Remove和Change斷點的通知機制,并提供跨工作臺調(diào)用斷點的持久化機制。其中●Breakpoint extension——擴展斷點的擴展點●Breakpoint——代表斷點實例的模型對象●Marker——用于持久化斷點屬性以及在編輯器中顯示斷點●Breakpoint Manager——斷點倉庫,提供斷點變化的事件通知●Debug Target——安裝斷點的底層運行另一方面,利用JSR-45規(guī)范,為這些非Java語言寫成,卻需要編譯成Java代碼,運行在JVM中的程序,提供了一個進行調(diào)試的標(biāo)準(zhǔn)機制。在調(diào)試單個展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件時,Java應(yīng)用服務(wù)器的JVM接收到調(diào)試客戶端平臺的請求,根據(jù)對應(yīng)表(SMAP),從構(gòu)件文件名和圖元標(biāo)識ID轉(zhuǎn)換到Java代碼的行號,或者是從JSP文件名和行號轉(zhuǎn)換到Java代碼的行號;Java應(yīng)用服務(wù)器的JVM發(fā)出suspend事件通知時,根據(jù)對應(yīng)表(SMAP),將Java代碼行號轉(zhuǎn)換為構(gòu)件文件名和圖元標(biāo)識ID,或者JSP文件名和行號,將此信息告知調(diào)試客戶端平臺,對于展現(xiàn)構(gòu)件、業(yè)務(wù)構(gòu)件,客戶端平臺渲染構(gòu)件編輯器中的圖元斷點,而對于JSP來說,調(diào)試線程會停在JSP文件對應(yīng)的代碼行上。
該構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,包括圖形化構(gòu)件調(diào)試平臺和通過計算機通信網(wǎng)絡(luò)相連接的后臺Java應(yīng)用服務(wù)器,其中,所述的方法包括斷點配置操作和運行時斷點源代碼查找定位操作,所述的斷點配置操作包括以下步驟(1)系統(tǒng)進行初始化操作;(2)根據(jù)用戶的操作,圖形化構(gòu)件調(diào)試平臺創(chuàng)建構(gòu)件的斷點標(biāo)記,并注冊在斷點管理器中;(3)該調(diào)試平臺判斷該斷點為圖元斷點還是JSP斷點;(4)如果該斷點為圖元斷點,則生成對應(yīng)的圖元斷點信息并記錄在配置文件中,并通過計算機通信網(wǎng)絡(luò)進行通知后臺Java應(yīng)用服務(wù)器更新圖元斷點狀態(tài)信息的處理操作,所述的圖元斷點信息格式為項目名稱.包名稱.構(gòu)件文件夾名稱.構(gòu)件文件名稱.擴展名稱.圖元標(biāo)識ID=斷點狀態(tài),其中,斷點狀態(tài)為“設(shè)置”或者“取消”;上述的處理操作包括以下步驟(a)圖形化構(gòu)件調(diào)試平臺和后臺Java應(yīng)用服務(wù)器之間建立socket通信連接;(b)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動過程中,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“加載”請求,將所述的圖元斷點狀態(tài)信息送至該應(yīng)用服務(wù)器上;(c)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動完畢,則判斷該圖元斷點信息中的斷點狀態(tài)是“設(shè)置”還是“取消”;(d)如果是“設(shè)置”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“添加”請求,該應(yīng)用服務(wù)器讀取配置文件并添加圖元斷點狀態(tài)信息;(e)如果是“取消”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“刪除”請求,該應(yīng)用服務(wù)器讀取配置文件并更新圖元斷點狀態(tài)信息;其中的“添加”請求和“刪除”請求均為HTTP請求;(5)如果該斷點為JSP斷點,則所述的斷點管理器生成對應(yīng)的斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器更新斷點狀態(tài)信息,該操作為斷點管理器生成對應(yīng)的JSP斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器上的Java虛擬機JVM更新斷點狀態(tài)信息;所述的運行時斷點源代碼查找定位操作包括以下步驟(1)將構(gòu)件部署在后臺Java應(yīng)用服務(wù)器上;(2)該應(yīng)用服務(wù)器判斷該構(gòu)件是符合XML規(guī)范并由圖元構(gòu)成的展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,還是符合JSP規(guī)范的頁面構(gòu)件;(3)如果該構(gòu)件為展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系,包括以下步驟(a)應(yīng)用服務(wù)器為該構(gòu)件生成Java代碼,且其中Java方法與該構(gòu)件中的圖元相對應(yīng);(b)對上述Java代碼進行編譯生成class文件;(c)應(yīng)用服務(wù)器生成構(gòu)件文件名、圖元標(biāo)識ID與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP,該對應(yīng)關(guān)系表SMAP的格式為圖元標(biāo)識ID#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量;(d)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中;(4)該應(yīng)用服務(wù)器根據(jù)所述的斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點;
(5)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的圖元斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺,包括以下步驟(a)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(b)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)圖元斷點的構(gòu)件文件名與圖元標(biāo)識ID;(c)將構(gòu)件文件名、圖元標(biāo)識ID及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺;(6)圖形化構(gòu)件調(diào)試平臺根據(jù)該圖元斷點信息進行圖元斷點的展現(xiàn)操作,該展現(xiàn)操作包括以下步驟(a)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(b)根據(jù)所述的構(gòu)件文件名和圖元ID定位到構(gòu)件的圖元斷點;(c)對該圖元斷點進行渲染顯示處理;(7)如果該構(gòu)件為頁面構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系,包括以下步驟(a)應(yīng)用服務(wù)器為該構(gòu)件的JSP代碼生成Java代碼;(b)對上述Java代碼進行編譯生成class文件;(c)應(yīng)用服務(wù)器生成構(gòu)件JSP文件名、JSP代碼的行號與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP,該對應(yīng)關(guān)系表SMAP的格式為JSP代碼行號#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量;(d)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中;(8)系統(tǒng)判斷應(yīng)用服務(wù)器的類型,并根據(jù)相應(yīng)類型和斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點,該判斷應(yīng)用服務(wù)器的類型的操作為通過應(yīng)用服務(wù)器啟動Java虛擬機JVM時的目標(biāo)字符串的名稱來判斷應(yīng)用服務(wù)器類型;(9)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的JSP斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺,包括以下步驟(a)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(b)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)JSP斷點的JSP文件名與JSP代碼的行號;
(c)將JSP文件名、JSP代碼的行號及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺;(10)圖形化構(gòu)件調(diào)試平臺根據(jù)該JSP斷點信息進行JSP斷點的展現(xiàn)操作,該展現(xiàn)操作包括以下步驟(a)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(b)根據(jù)所述的JSP文件名和JSP代碼的行號定位到構(gòu)件的JSP斷點;(c)顯示該JSP斷點處的代碼信息。
在實際應(yīng)用當(dāng)中,本發(fā)明方法中的展現(xiàn)構(gòu)件和業(yè)務(wù)構(gòu)件符合XML規(guī)范,由許多不同類型的圖元構(gòu)成,每個圖元都是一個XML元素,用戶可以設(shè)置某些圖元為圖元斷點,圖元ID是此圖元的唯一標(biāo)識;而頁面構(gòu)件JSP是符合JSP規(guī)范的文本文件,JSP斷點對應(yīng)JSP文件的源代碼行。
1、創(chuàng)建斷點在圖形化構(gòu)件調(diào)試平臺的實現(xiàn)中,添加斷點實際上就是為構(gòu)件文件對應(yīng)的IFile添加一個marker,并且設(shè)置了marker的屬性resource.createMarker(markerType);將斷點注冊到斷點管理器DebugPlugin.getDefault().getBreakpointManager().addBreakpoint(this)。
2、添加斷點添加斷點是指將創(chuàng)建的圖元斷點和JSP斷點上傳或添加到后臺Java應(yīng)用服務(wù)器端。圖形化構(gòu)件調(diào)試平臺調(diào)試客戶端將項目內(nèi)的圖元斷點信息記錄在breakpoint.cfg文件中,后臺Java應(yīng)用服務(wù)器啟動過程中和啟動結(jié)束后通過讀取此文件獲得圖元斷點的請求信息,記錄格式如下項目名稱.包名稱.構(gòu)件文件夾名稱.構(gòu)件文件名稱.擴展名稱.圖元標(biāo)識ID=ENABLE其中,ENABLE為“設(shè)置”。例如project.pkg.biz.bizBANNERDATAQuery.bzg.29=ENABLE。
以調(diào)試模式來啟動后臺Java應(yīng)用服務(wù)器的過程中,在調(diào)試客戶端圖形化構(gòu)件調(diào)試平臺與后臺Java應(yīng)用服務(wù)器之間的socket通信已建立后,圖形化構(gòu)件調(diào)試平臺向后臺Java應(yīng)用服務(wù)器發(fā)出Load的HTTP請求,將當(dāng)前項目內(nèi)展現(xiàn)構(gòu)件、業(yè)務(wù)構(gòu)件的圖元斷點及其有效狀態(tài)上傳到后臺Java應(yīng)用服務(wù)器上。后臺Java應(yīng)用服務(wù)器啟動完成后,添加斷點的操作是通過發(fā)出Add的HTTP請求完成,斷點狀態(tài)為ENABLE。
JSP斷點在斷點管理器注冊后,斷點管理器負(fù)責(zé)產(chǎn)生BreakpointRequest,通知正在運行的JVM Target如果此時還沒有啟動JVM,會在JVM啟動的時候,將所有斷點一起通知JVM Target。
3、刪除斷點后臺Java應(yīng)用服務(wù)器啟動完成后,失效或刪除展現(xiàn)構(gòu)件和業(yè)務(wù)構(gòu)件上的圖元斷點,breakpoint.cfg文件中記錄此圖元斷點格式如下項目名稱.包名稱.構(gòu)件文件夾名稱.構(gòu)件文件名稱.擴展名稱.圖元標(biāo)識ID=DISABLE其中,DISABLE為“取消”。如prcject.pkg.biz.bizBANNERDATAQuery.bzg.29=DISABLE。
圖形化構(gòu)件調(diào)試平臺調(diào)試客戶端向后臺Java應(yīng)用服務(wù)器發(fā)出Del的HTTP請求,后臺Java應(yīng)用服務(wù)器讀取breakpoint.cfg文件,更新對應(yīng)java代碼行中的斷點狀態(tài)。
對于JSP斷點,通過點擊源代碼行的JSP斷點,斷點管理器產(chǎn)生BreakpointRequest,通知運行的JVM Target,更新斷點的有效狀態(tài)。
在進行構(gòu)件調(diào)試過程中,運行時的構(gòu)件斷點處的源代碼的查找過程如下1、調(diào)試展現(xiàn)構(gòu)件、業(yè)務(wù)構(gòu)件,定位圖元斷點展現(xiàn)構(gòu)件、業(yè)務(wù)構(gòu)件的編譯結(jié)果被部署到后臺Java應(yīng)用服務(wù)器上,調(diào)試單個展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件時,定位圖元斷點的過程是(1)后臺Java應(yīng)用服務(wù)器為每個構(gòu)件生成java文件,其中圖元對應(yīng)java method,編譯生成java類的class文件,并生成了構(gòu)件文件名和圖元標(biāo)識ID與java行號的對應(yīng)SMAP,將SMAP加入class文件的SourceDebugExtenstion屬性,規(guī)范格式如下源文件行號#源文件代號,重復(fù)次數(shù)目標(biāo)文件開始行號,目標(biāo)文件行號每次增加的數(shù)量例如InputStartLine#LineFileID,RepeatCountOutputStartLine,OutputLineIncrement。
其中源文件行號就是圖元ID,目標(biāo)文件開始行號是JAVA代碼的行號,這兩個行號是必須的。
請參閱圖7所示,由此分析一個展現(xiàn)構(gòu)件test.prg中的圖元ID是如何與Java代碼行對應(yīng)的。
對于展現(xiàn)構(gòu)件test.prg來說,生成Java代碼TestDebug.java,子流程test2.prg生成Java代碼TestDebug2.java,那么SMAP如下TestDebug.java代碼名稱*S prg源文件后綴*F+0 test.prg 對應(yīng)的第一個源文件名稱/pkg/pr/test.prg 項目中的相對路徑*L83,498,2109,21111,2
613,2*E(2)添加斷點javaStratumLineBreakpoint;(3)后臺Java應(yīng)用服務(wù)器的調(diào)試線程suspend在java斷點上,通過java斷點的行號查詢SMAP得到對應(yīng)圖元斷點的構(gòu)件文件名與圖元ID,將圖元ID及調(diào)試線程狀態(tài)傳給圖形化構(gòu)件調(diào)試平臺調(diào)試客戶端;(4)圖形化構(gòu)件調(diào)試平臺根據(jù)構(gòu)件文件名和圖元ID打開調(diào)試構(gòu)件編輯器,定位到圖元斷點,渲染圖元斷點;2、調(diào)試頁面構(gòu)件JSP,定位JSP斷點將頁面構(gòu)件JSP部署到后臺Java應(yīng)用服務(wù)器上,調(diào)試JSP時,定位JSP斷點的過程是(1)后臺Java應(yīng)用服務(wù)器將JSP編譯成JAVA代碼、JAVA class文件以及JSP文件名/行號和JAVA行號之間的對應(yīng)表(SMAP),將SMAP加入class文件的SourceDebugExtenstion屬性,JSR-45規(guī)范定義其格式如下源文件行號#源文件代號,重復(fù)次數(shù)目標(biāo)文件開始行號,目標(biāo)文件行號每次增加的數(shù)量例如InputStartLine#LineFileID,RepeatCountOutputStartLine,OutputLineIncrement。
其中源文件行號即是JSP代碼的行號,目標(biāo)文件開始行號是JAVA代碼行號,這兩個行號是必須的,SMAP示例首先注明Java代碼的名稱Hello_jsp.java,然后是stratum名稱JSP。隨后是兩個JSP文件的名稱Hello.jsp、greeting.jsp。兩個JSP文件共10行,產(chǎn)生的Hello_jsp共69行代碼。最后也是最重要的內(nèi)容就是源文件文件名/行號和目標(biāo)文件行號的對應(yīng)關(guān)系(*L與*E之間的部分)。
SMAPE:\Primeton\eclipse\workspace\test\pkg\page\Hello.jspJSP*S JSP*F+0 Hello.jsp/Hello.jsp+1 greeting.jsp/greeting.jsp*L1452463473484495501#151
1522537#056857*E(2)添加斷點JavaStratumLineBreakpointJSPBreakpoint重載了父類的addToTarget(JDIDebugTarget target)方法。重載這個方法的目的是根據(jù)不同的應(yīng)用服務(wù)器,設(shè)置不同的referenceTypeName和sourcePath。每種應(yīng)用服務(wù)器編譯JSP產(chǎn)生Java Class名稱的規(guī)則都不相同,例如Tomcat編譯Hello.jsp產(chǎn)生的Java類名為org.apache.jsp.Hello_jsp,而WebSphere6.0卻是com.ibm._jsp._Hello。只有確定服務(wù)器類型,才能知道referenceTypeName和souecePath應(yīng)該是什么。目前通過啟動JVM時target名稱來判斷應(yīng)用服務(wù)器類型String targetString=target.getLaunch().getLaunchConfiguration().getName();如果targetString包含Tomcat,就認(rèn)為是Tomcat。產(chǎn)生referenceTypeName后首先創(chuàng)建一ClassPrepareRequest通知,然后從JVM中取出所有的classes,如果是當(dāng)前的Class,再創(chuàng)建一個添加斷點通知。之所以這樣做,是因為有可能這個Class還沒有被JVM加載,直接通知JVM沒有任何意義。在Class被加載的時候,JVM會通知圖形化構(gòu)件調(diào)試平臺,這個時候,就會產(chǎn)生添加斷點通知。
(3)從瀏覽器訪問Hello.jsp,后臺Java應(yīng)用服務(wù)器在JAVA斷點處掛起,查詢SMAP得到對應(yīng)JSP文件名以及對應(yīng)的源文件行號,通知圖形化構(gòu)件調(diào)試平臺調(diào)試客戶端,調(diào)試線程在源代碼行處掛起。
采用了上述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,由于在圖形化構(gòu)件調(diào)試平臺中根據(jù)用戶操作分別對圖元斷點和JSP斷點進行記錄,并通過計算機通信網(wǎng)絡(luò)將相應(yīng)的斷點狀態(tài)信息通知給后臺Java應(yīng)用服務(wù)器,該應(yīng)用服務(wù)器為該構(gòu)件生成相對應(yīng)的Java代碼,并建立該構(gòu)件與該Java代碼之間的對應(yīng)關(guān)系,然后在該Java代碼中配置相應(yīng)的斷點,當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺,最后圖形化構(gòu)件調(diào)試平臺根據(jù)該斷點信息進行斷點的展現(xiàn)操作,從而實現(xiàn)了非Java語言的構(gòu)件的基于斷點的圖形化集成環(huán)境調(diào)試,增強了調(diào)試的直觀效果,提高了調(diào)試的效率,不僅操作簡單形象,而且快捷方便,整個調(diào)試環(huán)境的運行效率較高,系統(tǒng)性能穩(wěn)定可靠,降低了開發(fā)維護的成本;同時增強了系統(tǒng)可移植性和可擴展性;不僅如此,該方法還能夠快速回應(yīng)業(yè)務(wù)需求的變化和技術(shù)變化,能夠支撐建立高度模塊化而且又高度整合的軟件系統(tǒng),適用范圍較為廣泛,為計算機構(gòu)件化軟件技術(shù)的進一步發(fā)展打下了堅實的基礎(chǔ)。
在此說明書中,本發(fā)明已參照其特定的實施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認(rèn)為是說明性的而非限制性的。
權(quán)利要求
1.一種構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,包括圖形化構(gòu)件調(diào)試平臺和通過計算機通信網(wǎng)絡(luò)相連接的后臺Java應(yīng)用服務(wù)器,其特征在于,所述的方法包括斷點配置操作和運行時斷點源代碼查找定位操作,所述的斷點配置操作包括以下步驟(1)系統(tǒng)進行初始化操作;(2)根據(jù)用戶的操作,圖形化構(gòu)件調(diào)試平臺創(chuàng)建構(gòu)件的斷點標(biāo)記,并注冊在斷點管理器中;(3)該調(diào)試平臺判斷該斷點為圖元斷點還是JSP斷點;(4)如果該斷點為圖元斷點,則生成對應(yīng)的圖元斷點信息并記錄在配置文件中,并通過計算機通信網(wǎng)絡(luò)進行通知后臺Java應(yīng)用服務(wù)器更新圖元斷點狀態(tài)信息的處理操作;(5)如果該斷點為JSP斷點,則所述的斷點管理器生成對應(yīng)的斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器更新斷點狀態(tài)信息;所述的運行時斷點源代碼查找定位操作包括以下步驟(1)將構(gòu)件部署在后臺Java應(yīng)用服務(wù)器上;(2)該應(yīng)用服務(wù)器判斷該構(gòu)件是符合XML規(guī)范并由圖元構(gòu)成的展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,還是符合JSP規(guī)范的頁面構(gòu)件;(3)如果該構(gòu)件為展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系;(4)該應(yīng)用服務(wù)器根據(jù)所述的斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點;(5)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的圖元斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺;(6)圖形化構(gòu)件調(diào)試平臺根據(jù)該圖元斷點信息進行圖元斷點的展現(xiàn)操作;(7)如果該構(gòu)件為頁面構(gòu)件,則應(yīng)用服務(wù)器為該構(gòu)件生成對應(yīng)的Java代碼,并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系;(8)系統(tǒng)判斷應(yīng)用服務(wù)器的類型,并根據(jù)相應(yīng)類型和斷點狀態(tài)信息在相應(yīng)的Java代碼中配置相應(yīng)的斷點;(9)當(dāng)系統(tǒng)運行到Java代碼的斷點處時,應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的JSP斷點信息,并通過計算機通信網(wǎng)絡(luò)傳送至所述的圖形化構(gòu)件調(diào)試平臺;(10)圖形化構(gòu)件調(diào)試平臺根據(jù)該JSP斷點信息進行JSP斷點的展現(xiàn)操作。
2.根據(jù)權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的圖元斷點信息格式為項目名稱.包名稱.構(gòu)件文件夾名稱.構(gòu)件文件名稱.擴展名稱.圖元標(biāo)識ID=斷點狀態(tài),其中,斷點狀態(tài)為“設(shè)置”或者“取消”。
3.根據(jù)權(quán)利要求2所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的通知后臺Java應(yīng)用服務(wù)器更新圖元斷點狀態(tài)信息的處理操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺和后臺Java應(yīng)用服務(wù)器之間建立socket通信連接;(2)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動過程中,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“加載”請求,將所述的圖元斷點狀態(tài)信息送至該應(yīng)用服務(wù)器上;(3)如果后臺Java應(yīng)用服務(wù)器的狀態(tài)是啟動完畢,則判斷該圖元斷點信息中的斷點狀態(tài)是“設(shè)置”還是“取消”;(4)如果是“設(shè)置”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“添加”請求,該應(yīng)用服務(wù)器讀取配置文件并添加圖元斷點狀態(tài)信息;(5)如果是“取消”,則所述的調(diào)試平臺向該應(yīng)用服務(wù)器發(fā)送“刪除”請求,該應(yīng)用服務(wù)器讀取配置文件并更新圖元斷點狀態(tài)信息。
4.根據(jù)權(quán)利要求3所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的“添加”請求和“刪除”請求均為HTTP請求。
5.根據(jù)權(quán)利要求1所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的斷點管理器通知后臺Java應(yīng)用服務(wù)器更新JSP斷點狀態(tài)信息為斷點管理器生成對應(yīng)的JSP斷點請求,并通過計算機通信網(wǎng)絡(luò)通知后臺Java應(yīng)用服務(wù)器上的Java虛擬機JVM更新斷點狀態(tài)信息。
6.根據(jù)權(quán)利要求1至5中任一項所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的應(yīng)用服務(wù)器為該展現(xiàn)構(gòu)件或者業(yè)務(wù)構(gòu)件生成對應(yīng)的Java代碼并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系包括以下步驟(1)應(yīng)用服務(wù)器為該構(gòu)件生成Java代碼,且其中Java方法與該構(gòu)件中的圖元相對應(yīng);(2)對上述Java代碼進行編譯生成class文件;(3)應(yīng)用服務(wù)器生成構(gòu)件文件名、圖元標(biāo)識ID與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP;(4)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中。
7.根據(jù)權(quán)利要求6所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的對應(yīng)關(guān)系表SMAP的格式為圖元標(biāo)識ID#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量。
8.根據(jù)權(quán)利要求6所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的圖元斷點信息并傳送至圖形化構(gòu)件調(diào)試平臺包括以下步驟(1)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(2)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)圖元斷點的構(gòu)件文件名與圖元標(biāo)識ID;(3)將構(gòu)件文件名、圖元標(biāo)識ID及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺。
9.根據(jù)權(quán)利要求8所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的圖形化構(gòu)件調(diào)試平臺根據(jù)該圖元斷點信息進行圖元斷點的展現(xiàn)操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(2)根據(jù)所述的構(gòu)件文件名和圖元ID定位到構(gòu)件的圖元斷點;(3)對該圖元斷點進行渲染顯示處理。
10.根據(jù)權(quán)利要求1至5中任一項所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的應(yīng)用服務(wù)器為該頁面構(gòu)件生成對應(yīng)的Java代碼并產(chǎn)生該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系包括以下步驟(1)應(yīng)用服務(wù)器為該構(gòu)件的JSP代碼生成Java代碼;(2)對上述Java代碼進行編譯生成class文件;(3)應(yīng)用服務(wù)器生成構(gòu)件JSP文件名、JSP代碼的行號與Java代碼的行號之間的對應(yīng)關(guān)系表SMAP;(4)將上述的對應(yīng)關(guān)系表SMAP加入到相應(yīng)class文件的源調(diào)試擴展屬性中。
11.根據(jù)權(quán)利要求10所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的對應(yīng)關(guān)系表SMAP的格式為JSP代碼行號#源文件代號,重復(fù)次數(shù)Java代碼的行號,Java代碼的行號每次增加的數(shù)量。
12.根據(jù)權(quán)利要求10所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的應(yīng)用服務(wù)器通過該構(gòu)件和Java代碼之間的對應(yīng)關(guān)系得到相應(yīng)的JSP斷點信息并傳送至圖形化構(gòu)件調(diào)試平臺包括以下步驟(1)應(yīng)用服務(wù)器的調(diào)試線程在Java代碼的斷點處掛起;(2)通過該Java代碼的斷點的行號查詢所述的對應(yīng)關(guān)系表SMAP得到對應(yīng)JSP斷點的JSP文件名與JSP代碼的行號;(3)將JSP文件名、JSP代碼的行號及所述調(diào)試線程的狀態(tài)送至圖形化構(gòu)件調(diào)試平臺。
13.根據(jù)權(quán)利要求12所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的圖形化構(gòu)件調(diào)試平臺根據(jù)該JSP斷點信息進行JSP斷點的展現(xiàn)操作包括以下步驟(1)圖形化構(gòu)件調(diào)試平臺打開調(diào)試構(gòu)件編輯器;(2)根據(jù)所述的JSP文件名和JSP代碼的行號定位到構(gòu)件的JSP斷點;(3)顯示該JSP斷點處的代碼信息。
14.根據(jù)權(quán)利要求1至5中任一項所述的構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其特征在于,所述的判斷應(yīng)用服務(wù)器的類型為通過應(yīng)用服務(wù)器啟動Java虛擬機JVM時的目標(biāo)字符串的名稱來判斷應(yīng)用服務(wù)器類型。
全文摘要
本發(fā)明涉及一種構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,其中斷點配置操作包括調(diào)試平臺創(chuàng)建構(gòu)件斷點標(biāo)記并注冊于斷點管理器、生成圖元斷點信息并記錄在配置文件或者斷點管理器生成對應(yīng)的斷點請求通知應(yīng)用服務(wù)器更新斷點狀態(tài)信息;運行時斷點源代碼查找定位操作包括應(yīng)用服務(wù)器判斷該構(gòu)件的類型、應(yīng)用服務(wù)器生成Java代碼并產(chǎn)生其與構(gòu)件間的對應(yīng)關(guān)系、在代碼中配置斷點、應(yīng)用服務(wù)器將代碼斷點處的圖元/JSP斷點信息傳送至調(diào)試平臺、調(diào)試平臺進行圖元/JSP斷點的展現(xiàn)。采用該種構(gòu)件化軟件系統(tǒng)中實現(xiàn)非Java構(gòu)件的調(diào)試的方法,操作簡單,直觀形象,快捷方便,運行效率較高,性能穩(wěn)定可靠,降低了開發(fā)維護的成本,適用范圍較為廣泛。
文檔編號G06F11/36GK1987818SQ20061003048
公開日2007年6月27日 申請日期2006年8月25日 優(yōu)先權(quán)日2006年8月25日
發(fā)明者黃柳青, 焦列焱, 王蔥權(quán) 申請人:上海普元信息技術(shù)有限責(zé)任公司