亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

Java應用中的類加載隔離方法及裝置的制造方法

文檔序號:9646457閱讀:696來源:國知局
Java應用中的類加載隔離方法及裝置的制造方法
【技術領域】
[0001]本申請涉及Java應用技術領域,特別是涉及Java應用中的類加載隔離方法及裝置。
【背景技術】
[0002]在Java開發(fā)領域,組件是一個重要的概念。所謂組件,是能夠完成某種功能并且向外提供若干個使用這個功能的接口的可重用的代碼集。組件內(nèi)部由多個類來協(xié)同實現(xiàn)指定的功能,同時組件對外暴露一個或多個接口,供外界調(diào)用。插件、框架等都屬于組件的范疇。
[0003]開發(fā)人員在進行Java應用開發(fā)時,可能會用到多個組件,通過多個組件之間的協(xié)同,共同完成應用中的某項或多項功能。在傳統(tǒng)的開發(fā)過程中,開發(fā)人員直接將各個組件依賴在應用中,但是,由于不同的組件之間可能存在不同版本之間的沖突,以及各自的依賴項的不同版本之間的沖突等原因,給應用開發(fā)帶來很多不便。
[0004]為此,0SGi(0pen Service Gateway Initiative,開放服務網(wǎng)關協(xié)議)技術也就應運而生了。OSGi技術是面向Java的動態(tài)模型系統(tǒng),其主要職責就是為了讓開發(fā)者可以構建動態(tài)化、模塊化的Java系統(tǒng)。
[0005]也就是說,OSGi平臺具有兩大方面的特點:模塊化以及動態(tài)化。其中,所謂的模塊化,就是指可以將一個大型系統(tǒng)分解為多個較小的互相協(xié)作的邏輯單元,通過強制設定模塊之間的邏輯邊界來改善系統(tǒng)的維護性和封裝性。所謂的動態(tài)化,就是指可以提供在多種網(wǎng)絡設備上無需重啟的動態(tài)改變構造的功能。
[0006]可見,OSGi平臺的功能可謂非常強大,其提供的模塊化特點,尤其是隔離機制,由于可以避免組件間的沖突等問題,在實際應用中得到了普遍的認可。但是,在衡量一個平臺是否優(yōu)秀時,其標準往往不僅在于功能強大與否,還需要從實用性等角度進行衡量,例如,需要考慮是否易于維護、實現(xiàn)復雜度等因素。目前的OSGi平臺在實際的應用過程中就遇到了類似的問題,主要體現(xiàn)在:
[0007]從實用性角度來講,目前的大部分應用其實對于熱部署、動態(tài)替換等并沒有太強烈的需求,開發(fā)人員通常都能夠接受功能更新等導致的應用重啟;
[0008]從復雜從復雜性角度來講,想要做到平滑熱替換,尤其是對于那些運行期有狀態(tài)的組件而言,實現(xiàn)動態(tài)化相當復雜;
[0009]從可行性角度來講,實現(xiàn)動態(tài)化,需要改變開發(fā)人員和運維人員的開發(fā)與運維習慣,在推廣上面臨極大的挑戰(zhàn)。
[0010]以上問題都是由于OSGi提供了動態(tài)化特點而導致的。但是,對于開發(fā)人員而言,要想利用OSGi平臺提供的模塊化特點,就不得不接受其動態(tài)化特點,但由此會帶來巨大的工作量,需要耗費大量的系統(tǒng)資源以及人力、時間成本來實現(xiàn)這種動態(tài)化。因此,對于在使用OSGi平臺進行開發(fā)的過程中,在系統(tǒng)資源以及人力、時間成本方面都存在著比較大的浪費。
[0011]總之,如何降低上述的各種浪費,是迫切需要本領域技術人員解決的技術問題。

【發(fā)明內(nèi)容】

[0012]本申請?zhí)峁┝?Java應用中的類加載隔離方法及裝置,可以在實現(xiàn)模塊化的同時,無需為實現(xiàn)動態(tài)化而耗費過多的系統(tǒng)資源以及人力、時間成本。
[0013]本申請?zhí)峁┝巳缦路桨?
[0014]一種Java應用中的類加載隔離方法,預先在隔離容器的第一指定目錄下存放有多個需要隔離加載的組件包,每個組件包的第二指定目錄中存放有對應組件需導出的類的信息,第三指定目錄中保存有組件內(nèi)各個類及其依賴項的類代碼;所述方法包括:
[0015]在所述隔離容器被下載并保存到第三方應用程序所在目錄下之后,接收啟動指令;所述第三方應用程序為使用所述隔離容器提供的接口包開發(fā)的應用程序;
[0016]解析所述第一指定目錄下的各個組件包;
[0017]分別以各個組件的第三指定目錄為類路徑,為各個組件創(chuàng)建類加載器;
[0018]針對各個組件,分別用各自對應的類加載器對組件內(nèi)需要導出的類進行加載;
[0019]將所述需導出的類導出到所述第三方應用程序所在的運行環(huán)境中,以便在所述第三方應用程序運行時使用各個組件提供的功能。
[0020]一種Java應用中的類加載隔離裝置,預先在隔離容器的第一指定目錄下存放有多個需要隔離加載的組件包,每個組件包的第二指定目錄中存放有對應組件需導出的類的信息,第三指定目錄中保存有組件內(nèi)各個類及其依賴項的類代碼;所述裝置包括:
[0021]啟動指令接收單元,用于在所述隔離容器被下載并保存到第三方應用程序所在目錄下之后,接收啟動指令;所述第三方應用程序為使用所述隔離容器提供的接口包開發(fā)的應用程序;
[0022]解析單元,用于解析所述第一指定目錄下的各個組件包;
[0023]類加載器創(chuàng)建單元,用于分別以各個組件的第三指定目錄為類路徑,為各個組件創(chuàng)建類加載器;
[0024]類加載單元,用于針對各個組件,分別用各自對應的類加載器對組件內(nèi)需要導出的類進行加載;
[0025]類導出單元,用于將所述需導出的類導出到所述第三方應用程序所在的運行環(huán)境中,以便在所述第三方應用程序運行時使用各個組件提供的功能。
[0026]根據(jù)本申請?zhí)峁┑木唧w實施例,本申請公開了以下技術效果:
[0027]通過本申請實施例,提供了一個輕量級的隔離容器,該容器中的第一指定目錄下存放有多個需要隔離加載的組件包,每個組件包的第二指定目錄中存放有對應組件需導出的類的信息,第三指定目錄中保存有組件內(nèi)各個類及其依賴項的類代碼。第三方開發(fā)者可以使用該隔離容器提供的API接口包開發(fā)其應用程序,并將隔離容器保存到應用程序所在的目錄下,這樣,在啟動J2EE容器運行其應用程序時,隔離容器就可以首先被啟動,并且可以解析各個組件包,以組件包中的類路徑為參數(shù),分別為各個組件創(chuàng)建類加載器,這樣,就可以分別用各自的類加載器來加載組件內(nèi)的類,以此實現(xiàn)組件之間的相互隔離,互不干擾??梢姡旧暾垖嵤├峁┑母綦x容器可以幫助開發(fā)人員實現(xiàn)組件間的隔離,避免由于版本等出現(xiàn)的沖突問題,并且,無需為實現(xiàn)動態(tài)化而耗費過多的系統(tǒng)資源以及人力、時間成本。
[0028]當然,實施本申請的任一產(chǎn)品并不一定需要同時達到以上所述的所有優(yōu)點。
【附圖說明】
[0029]為了更清楚地說明本申請實施例或現(xiàn)有技術中的技術方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0030]圖1是本申請實施例提供的隔離容器的容器級目錄結構示意圖;
[0031]圖2是本申請實施例提供的隔離容器的模塊級目錄結構示意圖;
[0032]圖3是本申請實施例提供的方法的流程圖;
[0033]圖4是本申請實施例提供的裝置的示意圖。
【具體實施方式】
[0034]下面將結合本申請實施例中的附圖,對本申請實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├绢I域普通技術人員所獲得的所有其他實施例,都屬于本申請保護的范圍。
[0035]在本申請實施例中,提供了輕量級的隔離容器,該容器只通過類隔離實現(xiàn)模塊化,而忽略動態(tài)化。這樣,開發(fā)人員在基于該隔離容器進行應用的開發(fā)時,可以很好的實現(xiàn)組件之間的隔離,同時又不必為實現(xiàn)動態(tài)化而耗費更好的資源以及人力、時間成本。下面對具體的實現(xiàn)方案進行詳細地介紹。
[0036]首先需要說明的是,本申請實施例提供的隔離容器,一方面作為可以起到存儲作用,用于存儲各個組要隔離的組件包等信息,每個組件包中存放有對應組件自身的代碼、需導出的類的信息,等等;另一方面,該隔離容器本身還屬于一種可執(zhí)行程序,在具體的第三方應用的運行環(huán)境中,該隔離容器可以被啟動,啟動之后,可以執(zhí)行組件包的解析、類加載器的創(chuàng)建等一系列操作,使得隔離容器中的組件可以導出給具體的第三方應用,供第三方應用調(diào)用。
[0037]其中,具體實現(xiàn)時,首先可以基于每個組件的源代碼進行打包,將多個這樣的組件,連同隔離容器自己的內(nèi)核代碼,一起組成隔離容器。之后可以將該隔離容器進行發(fā)布(例如,發(fā)布到官方網(wǎng)站等處),同時向第三方開發(fā)人員提供API接口包;這樣,開發(fā)人員在開發(fā)自己的應用程序的時候,可以使用隔離容器提供給他們的API接口包。開發(fā)人員在完成應用程序的開發(fā)之后,可以將自己的應用程序(*.war)和隔離容器一起放入一個J2EE容器中去。開發(fā)人員啟動J2EE容器之后,J2EE容器會首先啟動該隔離容器,由隔離容器將其中存放的各個組件部署到J2EE環(huán)境中,之后就可以啟動應用程序。
[0038]需要說明的是,本申請實施例為隔離容器中各種信息的存儲方式(包括目錄結構、各目錄中的文件命名方式等)進行了定義。具體的,參見圖1,在該例子中,將隔離容器稱為Pan
當前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1