久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何理解簡單快捷的 java熱部署方式

164次閱讀
沒有評論

共計 2099 個字符,預計需要花費 6 分鐘才能閱讀完成。

如何理解簡單快捷的 java 熱部署方式,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

Arthas Hot Swap 插件介紹

引言

熱部署是幫助開發人員提高效率的利器,如果你的開發語言是 java,開發環境是遠程服務器,遠程服務器 debug 端口被限制,那么你可能無法通過 debug HotSwap 實現熱部署,那么本文介紹的 IntelliJ IDEA 插件可以幫助你在遠程服務器實現熱部署,而且操作簡單快捷。

本文熱部署插件 (Arthas Hot Swap) 是基于 Arthas redefine 命令實現的,使用該插件進行遠程熱部署無需任何配置,無需使用 debug 端口,只需幾個簡單動作就能完成。gitHub 地址:https://github.com/xxxtai/arthas-hotswap

使用方法

IntelliJ IDEA 安裝插件“Arthas Hot Swap”,從 gitHub Releases 下載安裝包;

熱部署使用的是 class 文件,所以需要先使用“mvn compile”編譯相關工程,后續可以使用 IDEA 的 Recompile 編譯單個文件,節省編譯時間;

選擇需要熱部署的 java 源文件或者 class 文件,在類名或方法名上單擊右鍵,選擇“Arthas Hot Swap”的“Swap this class”,插件后臺執行成功后會把熱部署需要的命令復制到粘貼板;

登錄遠程服務器,粘貼熱部署命令并執行,熱部署完成,該機器運行著最新的 class。機器第一次執行熱部署命令,可能失敗,再執行一次試下。

如何理解簡單快捷的 java 熱部署方式

第一步:選擇 Arthas Hot Swap 插件選項

如何理解簡單快捷的 java 熱部署方式

第二步:登錄遠程服務器粘貼命令并執行

如何理解簡單快捷的 java 熱部署方式

第三步:執行完成,熱部署成功

熱部署的限制

由于是基于 Arthas 的 redefine 命令實現的熱部署,redefine 又是基于 Instrumentation API 實現的熱部署,所以和 IDEA 的 debug HotSwap 是有一樣的限制。限制如下:無法修改類名、方法名,無法修改類屬性名稱,無法新增類屬性,無法新增非靜態方法。由于本插件暫時無法獲取內部類的 class 文件,所以暫時不支持修改內部類。

Arthas Hot Swap 插件原理

Arthas 是阿里巴巴開源的 Java 代碼診斷工具。Arthas 的 redefine 命令是基于 Instrumentation API 實現的熱部署,因此和 HotSwap 熱部署方式一樣,有同樣的限制。Arthas 的 redefine 命令其實是把 Instrumentation API 的 redefineClasses 方法包裝后提供給用戶,那么我們就可以根據 redefine 命令發揮想象力,實現熱部署。

Arthas 官方文檔推薦使用 jad/mc/redefine 等一連串命令實現 class 遠程熱替換,流程大概是:jad 命令對老 class 進行反編譯 – vim 編輯源碼 – mc 命令編譯源碼 – redefine 熱替換 class。這種方式存在兩個問題:一是太麻煩,二是 mc 編譯大概率會失敗。如果能這樣就好,本地修改代碼編譯后上傳 class 文件到遠程服務器,再使用 redefine 命令熱替換 class。因此官方文檔又推薦,首先將 class 二進制文件轉換成 base64 編碼,然后再復制粘貼到遠程服務器,再把 base64 編碼轉換成 class 文件,最后,使用 redefine 進行熱替換。這么麻煩,還不如重新部署呢。所以 redefine 命令比較雞肋。

Arthas 官方推薦的熱替換方法最大的問題在于,上傳 class 文件到遠程服務器進行熱替換的流程太麻煩,那么這些麻煩且固定的流程為何不交給機器來做呢。所以,本文推薦的“Arthas Hot Swap”插件就有必要了,該插件就是為了提升使用 Arthas 進行熱替換的效率,幾個簡單的動作就能熱替換一個 class 文件,可以解決開發過程中 80% 的熱部署需求,剩下的 20% 用重新部署解決就好了。

Arthas Hot Swap 插件執行流程

根據用戶選擇的源文件找到 class 文件,默認在 /target/classes 路徑下面查找,用戶也可以直接選擇 class 文件;

使用 AES-128 加密 class 文件,輸出 base64 編碼;

加密的 class 文件上傳至 oss,返回 oss 訪問地址;

渲染熱部署需要執行的腳本,渲染后的腳本也上傳至 oss,返回 oss 訪問地址;

組裝熱部署命令,并自動復制到粘貼板。

遠程服務端熱部署執行流程

登錄遠程服務器,粘貼熱部署命令并執行;

下載熱部署腳本,執行熱部署腳本;

創建工作空間;

檢查是否安裝 openssl,沒有安裝則進行安裝;

下載 AES-128 加密的 class 文件;

使用 openssl enc 解密得到 class 二進制文件;

通過腳本方式安裝 arthas;

創建與 arthas 通信的管道并啟動 arthas;

arthas 選擇 java 進程,默認選擇第一個;

arthas 執行 redefine 命令熱替換 class 文件;

打印熱替換結果。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注丸趣 TV 行業資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-25發表,共計2099字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 虎林市| 卓尼县| 宜兰县| 太白县| 集安市| 东乡县| 山东省| 阿拉善盟| 康平县| 将乐县| 新营市| 宜州市| 新田县| 太仓市| 汉中市| 霍邱县| 九寨沟县| 德州市| 西城区| 宝丰县| 神木县| 蛟河市| 禄丰县| 金秀| 兰州市| 镇康县| 泗洪县| 罗山县| 宝鸡市| 贞丰县| 忻城县| 德安县| 丰镇市| 富川| 璧山县| 县级市| 新余市| 西乌珠穆沁旗| 大丰市| 嫩江县| 福海县|