当前位置: 首页 > news >正文

Springboot启动时记录进程ID

Springboot启动时记录进程ID

1. 背景说明

springboot项目打包成可执行jar包以后,需要通过java -jar xxx.jar启动项目.启动方式对非技术人员不太友好.所以需要项目构建时,生成一个start.batstop.bat的脚本.关闭采用taskkill -F -PID命令或者 kill -9 需要知道启动的进程ID.

2. 代码实现

  • springboot启动类,添加 ApplicationPidFileWriter listeners 实现启动时记录PID
// 小游戏 地心侠士SpringApplication appliction = new SpringApplication(AppsApplication.class);appliction.addListeners(new ApplicationPidFileWriter());appliction.run(args);

这样项目运行后,会在根目生成一个application.pid文件,记录启动的进程ID.

  • 实现关闭代码
// 小游戏  地心侠士
private static void shutdown() {
File file = new File("application.pid");
try {FileReader fileReader = new FileReader(file);String pid = null;try (BufferedReader br = new BufferedReader(fileReader)) {pid = br.readLine();}if (StringUtils.isNotBlank(pid)) {if (System.getProperty("os.name").toLowerCase().indexOf("windows") > -1) {Runtime.getRuntime().exec("taskkill -F -PID " + pid);} else {Runtime.getRuntime().exec("kill -9 " + pid);}}
} catch (IOException e) {if (e instanceof FileNotFoundException) {System.err.println("未找到文件:" + file.getAbsolutePath());}System.out.println("读取文件异常");
}
}
  • 启动类判断是关闭还是启动
public static void main(String[] args) throws IOException, ClassNotFoundException {for (String arg : args) {// 如果执行jar包时,参数为shutdown,则关闭项目if ("shutdown".equals(arg)) {			shutdown();System.exit(0);}}// TOOD 小游戏 地心侠士 
}

3. 构建配置

使用 maven-assembly-plugin 插件动态生成启动脚本,在fileSets指定文件夹路径,在package时,会自动替换其中的Maven变量,插件配置如下

<build><plugins><plugin><artifactId>maven-assembly-plugin</artifactId><configuration><appendAssemblyId>false</appendAssemblyId><descriptors><descriptor>./package.xml</descriptor></descriptors></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions>
</plugin></plugins></build>

package.xml 配置中,针对脚本处理配置如下,脚本存放在 /src/scripts 目录下

<fileSets><fileSet><directory>src/scripts</directory><outputDirectory>/</outputDirectory><filtered>true</filtered>
</fileSet></fileSets>

4. 生成启动脚本

启动脚本模板,目录存放 /src/scripts/startup.bat, 使用maven打包变量可以生成具体启动脚本

@echo off
title SpringBoot-%date%-%time%-%cd%
java -jar -Dloader.path=resources,lib,plugin ${project.artifactId}-${project.version}.jar

5. 生成关闭脚本

关闭脚本模板,目录存放 /src/scripts/shutdown.bat

java -jar -Dloader.path=resources,lib ${project.artifactId}-${project.version}.jar shutdown

6. 总结

开发项目,尽量减少操作步骤.能代码化的脚本,一定代码化,减少人为出错的可能性.

原文地址:https://mp.weixin.qq.com/s/ZPyl-j9QgP-Pc6H-9dxFPQ

http://www.jsqmd.com/news/41230/

相关文章:

  • 019数据结构之栈——算法备赛 - 实践
  • 详细介绍:【Linux】07.Ubuntu开发环境部署
  • GESP考试报名附考试报名流程
  • 2025 最新电缆品牌权威推荐:耐火 / 阻燃 / 智能 / 光伏等全品类优质厂商榜单,附国际认证测评
  • 2025 最新电缆制造厂家推荐!电缆品牌权威榜单发布,耐火 / 智能 / 特种电缆优选企业全解析
  • 2025年Dynamics 365 CRM的工作行情如何?
  • iHaier2.0 智能协同办公模块(Doc-Collab)实现实用的方案详解
  • 字节序浅析
  • 2025 最新无缝钢管厂家推荐榜:国际测评认证 + 技术创新 + 全场景适配权威指南大口径无缝钢管/16Mn 无缝钢管/定制无缝钢管/厚壁无缝钢管公司推荐
  • 2025年硫酸钠流化床干燥机源头厂家权威推荐榜单:调味品振动流化床干燥机/大豆纤维流化床干燥机/味精振动流化床干燥机源头厂家精选
  • 2025 最新钢结构源头厂家推荐排行榜,聚焦优质供应与专业服务精选榜单美标 / 欧标钢结构 / 环保设备 / 水泥矿山 / 机械设备钢结构厂家推荐
  • 当下市面上靠谱的平移门服务商
  • 2025年11月中国伸缩门源头厂家口碑推荐榜单
  • 简单了解数组
  • 2025年目字扣订制厂家权威推荐榜单:塑料扣具/箱包插扣/五金插扣源头厂家精选
  • # 第10章 指针和结构体
  • 2025年步进式加热直饮水机订制厂家权威推荐榜单:奶茶店全自动烧水器/大型工业净水器/饭店专用开水器源头厂家精选
  • 2025 最新钢结构厂家推荐排行榜,涵盖全产业链服务与优质产能企业权威甄选钢结构建筑/钢结构房屋/钢结构屋面/钢结构网架/钢结构桁架/钢结构连廊公司推荐
  • 2025 年 11 月漆渣脱水系统,漆渣脱水机,漆渣脱水装置品牌最新推荐,产能、专利、环保三维数据透视!
  • Convex
  • 2025年全自动无屑切割倒角一体机实力厂家权威推荐榜单:自动化切割倒角一体机/切割倒角一体机/自动切割倒角一体机源头厂家精选
  • 2025 年 11 月喷漆废水处理工艺,喷漆废水处理技术改造,喷漆废水处理运维服务公司最新推荐,聚焦资质、案例、售后的五家机构深度解读
  • 2025 国内网架厂家最新推荐排行榜:聚焦钢结构 / 球形 / 螺栓球多场景,甄选技术服务双优的权威品牌指南
  • 【题解】P4707 重返现世
  • Flink Data Sink 理论 、架构、语义保证、两阶段提交与可插拔拓扑 - 指南
  • 滞留卡常题
  • 2025年推拉窗源头厂家权威推荐榜单:性价比门窗/系统窗/自建房门窗源头厂家精选
  • Cursor ai network issue workaround in Ubuntu 22.04
  • 2025 年漆渣脱水设备厂家最新推荐榜单:优质品牌厂家工艺系统装置全解析,助力企业高效环保处置漆渣脱水系统/漆渣脱水机/漆渣脱水装置厂家推荐
  • 2025 最新喷漆废水处理公司推荐!喷漆废水处理设备 / 药剂 / 工艺 / 循环回用系统优质品牌榜单,含技术改造与运维服务厂家优选