windows下tomcat启动时生成进程文件

环境:windows tomcat6
由于tomcat默认的shutdown.bat存在无法及时关闭进程的问题,进而可能导致tomcat同时存在两个进程在执行,导致schedule任务被重复执行。因此需要一种保证tomcat在同一时间点只能存在一个进程机制。

解决方案:

  1. 在tomcat启动时判断当前目录下tomcat.pid文件是否存在,如果存在则提示"tomcat is running",否则就在当前目录下创建tomcat.pid文件;
  2. 在tomcat停止时,为了保险起见可以通过taskkill命令强制杀进程,然后再删除当前目录下的tomcat.pid文件。

具体实现:

  1. 打开startup.bat,倒数第二行命令是:call “%EXECUTABLE%” start %CMD_LINE_ARGS%,这里启动使用的是【start】命令
    startup.bat

  2. 打开catalina.bat,可以看到当我们使用【start】去启动tomcat时,代码会重定向到doStart代码块,我们需要早tomcat启动前判断文件是否存在,如果不存在则创建文件
    在这里插入图片描述
    doStart code
    running code

  3. 打开shutdown.bat,倒数第二行命令是:call “%EXECUTABLE%” stop %CMD_LINE_ARGS%,这里启动使用的是【stop】命令
    shutdown.bat

  4. 在catalina.bat中的end代码块前,插入isStop/killPid/delPid代码块。其中isStop代码块用来判断当前执行的命令是否是【stop】命令,如果是stop命令则跳转到killPid代码块;killPid代码块则是遍历"netstat -ano|findstr [port]",获取到pid,然后使用taskill /f /pid [pid]强制杀死进程;delPid代码块负责删除pid文件。
    在这里插入图片描述

  5. 上一步创建了isStop代码块用来判断当前执行的命令是否是【stop】命令,然而新加的代码块是不会被执行的,因此我们需要修改原有的代码逻辑,下图画出的地方原先的代码是"goto end",也就是直接跳转到end代码块,为了能够在end之前执行下isStop代码块,因此这里将"goto end"修改为"goto isStop"
    在这里插入图片描述

至此修改逻辑已完成。能够实现在tomcat启动前生成pid进程文件,然后在tomcat停止时杀死进程并删除进程文件。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值