自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Jarboot:一個(gè)強(qiáng)大的Java進(jìn)程管理工具

開發(fā) 前端
本期推薦的Jarboot 是一個(gè)Java進(jìn)程啟停、管理、診斷的平臺(tái),可以管理、守護(hù)、監(jiān)控及診斷本地和遠(yuǎn)程的Java進(jìn)程。

本期推薦的Jarboot 是一個(gè)Java進(jìn)程啟停、管理、診斷的平臺(tái),可以管理、守護(hù)、監(jiān)控及診斷本地和遠(yuǎn)程的Java進(jìn)程。

[[443204]]

在測(cè)試環(huán)境、每日構(gòu)建的集成環(huán)境,可以把一系列編譯輸出等jar文件放入約定的目錄,由Jarboot提供友好的瀏覽器ui界面和http接口,統(tǒng)一管理它的啟動(dòng)、停止及狀態(tài)的監(jiān)控,以及執(zhí)行命令對(duì)目標(biāo)進(jìn)程進(jìn)行調(diào)試。

技術(shù)背景及目標(biāo)

Jarboot 使用Java Agent和ASM技術(shù)往目標(biāo)Java進(jìn)程注入代碼,無(wú)業(yè)務(wù)侵入性,注入的代碼僅用于和 Jarboot 的服務(wù)實(shí)現(xiàn)命令交互,部分命令會(huì)修改類的字節(jié)碼用于類增強(qiáng),加入了與Arthas類似的命令系統(tǒng),如獲取JVM信息、 監(jiān)控線程狀態(tài)、獲取線程棧信息等。

  • 瀏覽器界面管理,一鍵啟、停服務(wù)進(jìn)程,不必挨個(gè)手動(dòng)執(zhí)行
  • 支持啟動(dòng)、停止優(yōu)先級(jí)配置,默認(rèn)并行啟動(dòng)
  • 支持進(jìn)程守護(hù),開啟后若服務(wù)異常退出則自動(dòng)啟動(dòng)并通知
  • 支持文件更新監(jiān)控,開啟后若jar文件更新則自動(dòng)重啟
  • 調(diào)試命令執(zhí)行,同時(shí)遠(yuǎn)程調(diào)試多個(gè)Java進(jìn)程,界面更友好

架構(gòu)簡(jiǎn)介 

模塊關(guān)系 

序列圖 

安裝或編譯構(gòu)建

使用Docker

  1. sudo docker run -itd --name jarboot -p 9899:9899 mazheng0908/jarboot 

編譯源碼的步驟

使用壓縮包安裝或者Docker的時(shí)候忽略此步驟

編譯Jarboot源代碼 

  1. #首先編譯前端 
  2. $ cd jarboot-ui 
  3. #首次時(shí)需要先安裝依賴,執(zhí)行yarn或npm install 
  4. $ yarn 
  5.  
  6. #執(zhí)行編譯,yarn build或npm run build,開發(fā)模式可執(zhí)行yarn start或npm run start 
  7. $ yarn build 
  8.  
  9. #切換到代碼根目錄,編譯Java代碼 
  10. $ cd ../ 
  11. $ mvn clean install 

啟動(dòng)Jarboot服務(wù) 

  1. #執(zhí)行 startup.sh 啟動(dòng), 在Windows系統(tǒng)上使用startup.cmd。 
  2. $ sh startup.sh 

進(jìn)入登錄界面,初始的用戶名:jarboot,默認(rèn)密碼:jarboot

SpringBoot應(yīng)用

引入spring-boot-starter-jarboot依賴 

  1. <dependency> 
  2.     <groupId>io.github.majianzheng</groupId> 
  3.     <artifactId>spring-boot-starter-jarboot</artifactId> 
  4.     <version>${jarboot.version}</version> 
  5. </dependency> 

實(shí)現(xiàn)CommandProcessorSPI接口

同樣的, 你也可以在方法上使用 @Bean 注解來(lái)定義命令處理器。

如果沒有使用@Name注解的話,將會(huì)默認(rèn)使用Bean的名稱作為命令的名稱。 

  1. @Name("spring.command.name"
  2. @Summary("The command summary"
  3. @Description("The command usage detail"
  4. @Component 
  5. public class DemoServiceImpl implements DemoService, CommandProcessor { 
  6.   @Override 
  7.   public String process(CommandSession session, String[] args) { 
  8.     return "Spring boot Demo user-defined command using Spring SPI"
  9.   } 
  10.   //implement other method... 

當(dāng)引入了spring-boot-starter-jarboot依賴后,將會(huì)增加2個(gè)Spring調(diào)試命令,spring.bean和spring.env。 

  1. #spring.bean 用法: 
  2. $ spring.bean [-b <name>] [-d] 
  3. #示例: 
  4. # 獲取所有的bean name 
  5. $ spring.bean 
  6. # 獲取bean的信息 
  7. $ spring.bean -b beanName 
  8. # 獲取bean的詳細(xì)信息 
  9. $ spring.bean -b beanName -d 
  10.  
  11. #sping.env 用法: 
  12. $ spring.env <name
  13. #示例: 
  14. $ spring.env spring.application.name 

如何創(chuàng)建一個(gè)用戶自定義的命令

引入jarboot api的依賴

  1. <dependency> 
  2.     <groupId>io.github.majianzheng</groupId> 
  3.     <artifactId>jarboot-api</artifactId> 
  4.     <scope>provided</scope> 
  5.     <version>${jarboot.version}</version> 
  6. </dependency> 

實(shí)現(xiàn)spi接口 

  1. /** 
  2.  * 使用Name注解來(lái)定義一個(gè)命令的名字 
  3.  */ 
  4. @Name("demo"
  5. @Summary("The command summary"
  6. @Description("The command usage detail"
  7. public class DemoCommandProcessor implements CommandProcessor { 
  8.     @Override 
  9.     public String process(CommandSession session, String[] args) { 
  10.         return "demo SPI command result."
  11.     } 

創(chuàng)建JDK的spi定義文件

在目錄resources/META-INF/services中創(chuàng)建名為 com.mz.jarboot.api.cmd.spi.CommandProcessor的文件,內(nèi)容為類的全名。 

  1. public class DemoApplication { 
  2.     public static void main(String[] args) { 
  3.         // do something 
  4.         try { 
  5.             //Notify completion 
  6.             JarbootFactory.createAgentService().setStarted(); 
  7.         } catch (Exception e) { 
  8.             log(e.getMessage()); 
  9.         } 
  10.     } 

 

 

責(zé)任編輯:未麗燕 來(lái)源: 今日頭條
相關(guān)推薦

2023-03-07 14:21:57

2019-07-22 20:03:23

Docker操作系統(tǒng)Linux

2021-03-04 12:55:01

systemd進(jìn)程管理工具Linux

2025-03-21 08:30:00

容器管理開發(fā)開源

2021-01-14 15:41:22

LinuxSupervisor命令

2021-03-17 10:29:35

systemdLinux管理工具

2018-11-09 09:40:52

2015-07-28 15:10:55

2020-04-29 09:42:51

Linux 服務(wù)器 工具

2022-06-06 08:37:13

Linux遠(yuǎn)程桌面工具

2023-03-07 07:43:27

2022-11-04 07:16:45

2013-09-12 10:03:09

項(xiàng)目管理項(xiàng)目管理工具

2013-09-12 10:19:03

移動(dòng)項(xiàng)目管理

2011-08-12 10:38:09

MongoDB

2011-11-10 09:53:52

項(xiàng)目管理

2022-01-10 10:23:00

云計(jì)算云成本工具

2021-11-17 10:01:59

工具KubernetesLinux

2025-04-17 04:00:00

SQLite-WebSQLite數(shù)據(jù)庫(kù)

2022-05-25 16:59:27

Kubectl-IcKubernetesPod
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)