[發(fā)明專利]基于Springboot的在線接口代碼生成方法有效
| 申請?zhí)枺?/td> | 202110807233.2 | 申請日: | 2021-07-16 |
| 公開(公告)號: | CN113419741B | 公開(公告)日: | 2022-05-27 |
| 發(fā)明(設(shè)計)人: | 吳志雄;陳大耀 | 申請(專利權(quán))人: | 南威軟件股份有限公司 |
| 主分類號: | G06F8/41 | 分類號: | G06F8/41;G06F9/445;G06F8/65;G06F9/54 |
| 代理公司: | 福州元創(chuàng)專利商標(biāo)代理有限公司 35100 | 代理人: | 陳明鑫;蔡學(xué)俊 |
| 地址: | 362018 福建省*** | 國省代碼: | 福建;35 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 基于 springboot 在線 接口 代碼 生成 方法 | ||
1.一種基于Springboot的在線接口代碼生成方法,其特征在于,提供基于Springboot的分布式微服務(wù)式系統(tǒng),包括主控端與多個微服務(wù)客戶端;其中,
主控端,用于源碼生成,向多個微服務(wù)客戶端分發(fā)源碼并發(fā)起包括熱更新的操作,同時接收各個微服務(wù)客戶端的處理結(jié)果;
微服務(wù)客戶端,用于接收源碼、預(yù)編譯檢查代碼是否編譯成功,最終執(zhí)行熱更新重新加載Springboot 上下文,將從源碼編譯成功的Class加載至Spring的IoC中,注冊成Spring的服務(wù),以供調(diào)用;
該方法具體實(shí)現(xiàn)步驟如下:
步驟1、啟動TCP連接服務(wù):
主控端啟動時自動啟動TCP服務(wù)端口;
微服務(wù)客戶端啟動時自動連接主控端的TCP服務(wù)端口并向主控端注冊自己的信息,為主控端及微服務(wù)客戶端之間的RPC調(diào)用提供通信鏈路;
步驟2、主控端和微服務(wù)客戶端建立TCP連接服務(wù)后,主控端進(jìn)行源碼生成:
在主控端根據(jù)代碼模板生成通用類的源碼或在主控端在線編寫代碼,主控端生成源碼;
步驟3、源碼分組:
主控端根據(jù)生成的源碼的類別與微服務(wù)客戶端的類別做分組,將屬于同一個微服務(wù)客戶端的代碼打包;
步驟4、源碼分發(fā):
主控端將分組好的源碼根據(jù)微服務(wù)的依賴關(guān)系,按順序向微服務(wù)客戶端發(fā)送分發(fā)源碼的RPC請求,等待結(jié)果返回;
步驟5、微服務(wù)客戶端收到分發(fā)源碼的RPC請求時,將收到的源碼數(shù)據(jù)送進(jìn)自定義的ClassLoader進(jìn)行編譯,編譯成功后得到Class對象,驗(yàn)證源碼正確性,最終將源碼緩存至內(nèi)存中,并返回執(zhí)行的結(jié)果給主控端;
步驟6、主控端將接收到所有的微服務(wù)客戶端返回的分發(fā)源碼的RPC請求結(jié)果,根據(jù)返回結(jié)果判斷是否分發(fā)源碼執(zhí)行成功,若有一個失敗,則流程中止,返回失敗;若全部都成功則進(jìn)行下一步操作;
步驟7、主控端按照源碼模塊要求的順序,依次向微服務(wù)客戶端發(fā)送熱更新RPC請求,并等待結(jié)果返回;
步驟8、微服務(wù)客戶端接收到熱更新的RPC請求時,觸發(fā)執(zhí)行熱更新功能模塊,系統(tǒng)準(zhǔn)備執(zhí)行熱更新;
步驟9、微服務(wù)客戶端執(zhí)行熱更新,關(guān)閉Springboot 應(yīng)用的上下文,注入進(jìn)Spring的所有組件將被關(guān)閉,線程及線程池也將被關(guān)閉。
2.根據(jù)權(quán)利要求1所述的一種基于Springboot的在線接口代碼生成方法,其特征在于,該方法還包括清除緩存步驟,即采用反射方式將靜態(tài)類中的緩存數(shù)據(jù)全部清除,避免內(nèi)存泄露。
3.根據(jù)權(quán)利要求2所述的一種基于Springboot的在線接口代碼生成方法,其特征在于,所述清除緩存步驟具體實(shí)現(xiàn)如下:
步驟10、微服務(wù)客戶端再檢查當(dāng)前所有的線程以確認(rèn)需要被關(guān)閉線程,最終將找到的所有待關(guān)閉的線程執(zhí)行銷毀操作,釋放資源;
步驟11、微服務(wù)客戶端啟動應(yīng)用流程,將所有已下發(fā)的源碼從緩存中寫入到緩存文件中,以備冷啟動時自動編譯并加載所有代碼;創(chuàng)建自定義的ClassLoader并設(shè)置為當(dāng)前線程的ClassLoader,以便啟動系統(tǒng)時接管jar包及Class文件的加載,根據(jù)規(guī)則分配其使用的ClassLoader,使得系統(tǒng)正常啟動;
步驟12、使用當(dāng)前自定義的ClassLoader從源碼緩存中讀取所有的源碼,并編譯成Class寫到本地的路徑下,以便ClassLoader能夠正確加載該Class;
步驟13、啟動Springboot 應(yīng)用上下文,加載從源碼編譯的Class并以服務(wù)的方式注入進(jìn)Spring容器中,系統(tǒng)的模塊可以直接調(diào)用此代碼;至此微服務(wù)客戶端熱更新完成,返回執(zhí)行熱更新的結(jié)果給主控端;
步驟14、主控端收到所有的微服務(wù)客戶端熱更新的結(jié)果,若有一個失敗,則流程中止,返回失敗,若全部都成功則 操作成功。
4.根據(jù)權(quán)利要求1所述的一種基于Springboot的在線接口代碼生成方法,其特征在于,步驟1中,主控端可通過RPC調(diào)用微服務(wù)客戶端;微服務(wù)客戶端也可通過RPC調(diào)用主控端,主控端、微服務(wù)客戶端雙邊的RPC調(diào)用共用一個TCP鏈路,以降低系統(tǒng)的部署難度。
5.根據(jù)權(quán)利要求1所述的一種基于Springboot的在線接口代碼生成方法,其特征在于,步驟5中,ClassLoader是基于Groovy實(shí)現(xiàn)。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于南威軟件股份有限公司,未經(jīng)南威軟件股份有限公司許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110807233.2/1.html,轉(zhuǎn)載請聲明來源鉆瓜專利網(wǎng)。
- 上一篇:一種基于分塊并行的目標(biāo)檢測方法
- 下一篇:一種爬管機(jī)器人
- 基于SpringBoot服務(wù)的Mock測試方法
- springboot微服務(wù)框架的任務(wù)定時執(zhí)行方法、裝置、設(shè)備及介質(zhì)
- 一種基于非結(jié)構(gòu)化數(shù)據(jù)庫和IPF的共享文檔的系統(tǒng)
- 一種Springboot程序加密和解密的裝置及方法
- 基于SpringBoot的web系統(tǒng)自動生成工具
- 一種業(yè)務(wù)規(guī)則引擎執(zhí)行系統(tǒng)及方法
- 一種基于SpringBoot的Zeus框架的開發(fā)方法及Zeus框架
- 對異常MQ信息的監(jiān)控及管理方法
- 動態(tài)修改微服務(wù)配置信息的方法及系統(tǒng)、存儲介質(zhì)
- 一種基于springboot框架的信息處理系統(tǒng)
- 用于呈現(xiàn)在線實(shí)體在線狀態(tài)的系統(tǒng)和方法
- 提供web服務(wù)接入的在線系統(tǒng)和方法
- 定制在線圖標(biāo)
- 一種水質(zhì)在線檢測預(yù)處理裝置
- 在線測試學(xué)習(xí)方法、系統(tǒng)、計算機(jī)設(shè)備及存儲介質(zhì)
- 一種在線文檔的分頁方法、裝置、設(shè)備以及可讀介質(zhì)
- 一種基于web在線學(xué)習(xí)的資源訪問平臺
- 一種在線學(xué)習(xí)系統(tǒng)
- 在線文檔提交方法、裝置、計算機(jī)設(shè)備和存儲介質(zhì)
- 空調(diào)冷媒量確定方法、系統(tǒng)和可讀存儲介質(zhì)





