Jarboot一个强大的Java进程管理工具
《开源精选》是我们分享Github、Gitee等开源社区中优质项目的栏目,包括技术、学习、实用与各种有趣的内容。本期推荐的Jarboot 是一个Java进程启停、管理、诊断的平台,可以管理、守护、监控及诊断本地和远程的Java进程。
在测试环境、每日构建的集成环境,可以把一系列编译输出等jar文件放入约定的目录,由Jarboot 提供友好的浏览器ui界面和http 接口,统一管理它的启动、停止及状态的监控,以及执行命令对目标进程进行调试。
技术背景及目标
Jarboot 使用Java Agent 和ASM 技术往目标Java进程注入代码,无业务侵入性,注入的代码仅用于和 Jarboot 的服务实现命令交互,部分命令会修改类的字节码用于类增强,加入了与Arthas 类似的命令系统,如获取JVM信息、 监控线程状态、获取线程栈信息等。浏览器界面管理,一键启、停服务进程,不必挨个手动执行支持启动、停止优先级配置,默认并行启动支持进程守护,开启后若服务异常退出则自动启动并通知支持文件更新监控,开启后若jar文件更新则自动重启调试命令执行,同时远程调试多个Java进程,界面更友好
架构简介
模块关系
序列图安装或编译构建
使用Docker sudo docker run -itd --name jarboot -p 9899:9899 mazheng0908/jarboot
编译源码的步骤
使用压缩包安装或者Docker 的时候忽略此步骤
编译Jarboot源代码#首先编译前端 $ cd jarboot-ui #首次时需要先安装依赖,执行yarn或npm install $ yarn #执行编译,yarn build或npm run build,开发模式可执行yarn start或npm run start $ yarn build #切换到代码根目录,编译Java代码 $ cd ../ $ mvn clean install
启动Jarboot服务#执行 startup.sh 启动, 在Windows系统上使用startup.cmd。 $ sh startup.sh
进入登录界面,初始的用户名:jarboot ,默认密码:jarboot
SpringBoot应用引入spring-boot-starter-jarboot 依赖 io.github.majianzheng spring-boot-starter-jarboot ${jarboot.version} 实现CommandProcessor SPI接口
同样的, 你也可以在方法上使用 @Bean 注解来定义命令处理器。
如果没有使用@Name 注解的话,将会默认使用Bean的名称作为命令的名称。@Name("spring.command.name") @Summary("The command summary") @Description("The command usage detail") @Component public class DemoServiceImpl implements DemoService, CommandProcessor { @Override public String process(CommandSession session, String[] args) { return "Spring boot Demo user-defined command using Spring SPI"; } //implement other method... }
当引入了spring-boot-starter-jarboot 依赖后,将会增加2个Spring调试命令,spring.bean 和spring.env #spring.bean 用法: $ spring.bean [-b ] [-d] #示例: # 获取所有的bean name $ spring.bean # 获取bean的信息 $ spring.bean -b beanName # 获取bean的详细信息 $ spring.bean -b beanName -d #sping.env 用法: $ spring.env #示例: $ spring.env spring.application.name如何创建一个用户自定义的命令引入jarboot api的依赖 io.github.majianzheng jarboot-api provided ${jarboot.version} 实现spi接口/** * 使用Name注解来定义一个命令的名字 */ @Name("demo") @Summary("The command summary") @Description("The command usage detail") public class DemoCommandProcessor implements CommandProcessor { @Override public String process(CommandSession session, String[] args) { return "demo SPI command result."; } }创建JDK的spi定义文件
在目录resources /META-INF /services 中创建名为 com.mz.jarboot.api.cmd.spi.CommandProcessor 的文件,内容为类的全名。public class DemoApplication { public static void main(String[] args) { // do something try { //Notify completion JarbootFactory.createAgentService().setStarted(); } catch (Exception e) { log(e.getMessage()); } } }
更多内容:https://gitee.com/majz0908/jarboot
美国殖民管道公司承认向勒索黑客支付了440万美元,很不舒服据美国ABC新闻20日报道,美国殖民管道公司(ColonialPipeline)证实,他们向入侵其电脑系统的黑客团伙支付了440万美元。殖民管道公司周三表示,在5月7日的勒索软件攻
华为将手机营销模式复制至汽车业务,希望逆袭蔚来华为内部人士称塞力斯华为之选SF5一个月的预定量已达到6500辆,超过了三大互联网造车新势力领头羊蔚来,并称至7月底前全国将有200家门店销售汽车,今年底前进一步增加至1000家以
百度高德导航,被女子用20部手机绕晕了20部手机能造成假堵车现在不少开车的人都会依赖手机地图软件,除了导航之外,很多人还会用地图软件来查看实时交通拥堵情况。那么问题来了,这些地图软件是怎么知道实时路况信息的呢?最近一位
100万辆新能源车下线,你知道比亚迪有多不容易吗?膨胀一下,笔者是2021年5月19日比亚迪第100万辆新能源车下线仪式的见证者。比亚迪这次邀请了400多家媒体参加,算上自己家的高管工作人员,以及供应商和各种合作伙伴,少说也有50
硬盘不分区是趋势吗?不分区(只保留一个分区)是对的。过去为什么分区?有三个原因1CIH病毒的影响CIH病毒是上世纪90年代全球爆发的电脑病毒,可以删除硬盘里的文件。可惜它有一个编程的bug只删除C盘的
为什么有些人要买贵手机?其实只有经过的才有体会,在你用过百元机千元机3000,最后你入手了5000的手机后,你会发现在很难回去了。有人说我一年一部千元机,三年用三部新的,不是比三年用一部3000的手机更好
各位电脑技术员,U盘PE哪家强,说出你常用的PE和理由?很多朋友都网上求助,使用下载的PE系统来进行系统恢复操作后,IE浏览器主页竟然莫名其妙的被修改为其他网址了,而且还被自动安装上了其他软件。那现在有没有干净的PE系统呢?1微PE,目
汽车智能化拒绝数据裸奔汽车产业正在经历百年未有之大变局,朝着电动化智能化网联化共享化的新四化方向转型。数据安全已成为汽车安全的重要组成部分。日前,一段疑似特斯拉汽车的车内监控视频流出。这段彩色视频画质清
老年人用智能手机中哪种支付钱款方式既简单方便又安全?当今社会,微信支付支付宝支付都非常方便。只要自已按程序开通,尊循有关规定正确使用,才能保障安全。两者支付数额在24小时内各有支付限制。微信支付数不超过1万元的,支付宝支付不超过5万
智能手表新高度!华为Watch3即将发布,搭载鸿蒙系统更加高端智能迄今为止,华为公司已为消费者推出了多款智能手表,如,华为WatchGT2GT2ProGT2eWatchFit等,它们均采用了当时最新的设计和软件技术。深受喜爱的华为WatchGT2
预算有限做不了智能分析?SpeedBI了解一下预算有限,又想做智能数据可视化分析?那么,你就得去了解一下按年租用可配置标准解决方案免下载安装且无需后期维护的SpeedBI数据分析云了。按年租用,减轻企业资金压力和在短时间内支付