冲冲冲S 2022-11-11 16:53 采纳率: 75%
浏览 31

在JAVA WEB 项目中, 通过调用restart.bat批处理文件, 实现Tomcat重启问题

问题: 在JAVA WEB 项目中, 通过调用restart.bat批处理文件, 实现Tomcat重启问题
环境: Tomcat7 java1.8 windows10
背景: 启动Tomcat可以使用bin目录下的 startup.bat 进行启动,但是会有黑窗口,误触会导致项目停止运行,所以把Tomcat配置成了windows服务,使用windows服务启动。当使用服务的方式启动项目后,使用 Process process = Runtime.getRuntime().exec(“cmd /c start restart.bat”); 的方式执行restart.bat文件进行tomcat的重启,tomcat只能关闭启动不了; 但是双击执行 restart.bat 文件或者 使用 startup.bat 方式启动项目再执行restart.bat文件都是可以实现tomcat的重启, 为什么以服务的方式实现不了?
restart.bat源码


```bash
@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",1)(window.close)&&exit
cd /d "%~dp0"

d:
cd \project\Tomcat1\bin
call shutdown.bat
ping -n 10 127.0.0.1
set port=8080
set pid=0
for /f "tokens=2,5" %%b in ('netstat -ano ^| findstr ":%port%"') do (
    set temp=%%b
    for /f "usebackq delims=: tokens=1,2" %%i in (`set temp`) do (
        if %%j==%port% (
            taskkill /f /pid %%c
            set pid=%%c
            echo 端口号【%port%】相关进程已杀死
        ) else (
            echo 不是本机占用端口【%port%】
        )
    )
)
if !pid!==0 (
   echo 端口号【%port%】没有占用
)
echo 操作完成
ping -n 10 127.0.0.1
net start Tomcat7
exit

java代码
Process process = Runtime.getRuntime().exec(“cmd /c start restart.bat”);

```

  • 写回答

1条回答 默认 最新

  • 夜郎king 2022博客之星IT其它领域TOP 12 2022-11-11 18:15
    关注

    自己调用命令的方式去重启,可能是程序中还有进城没结束,比如有一些自己定义的线程之类的

    评论

报告相同问题?

问题事件

  • 修改了问题 11月11日
  • 修改了问题 11月11日
  • 修改了问题 11月11日
  • 修改了问题 11月11日
  • 展开全部

悬赏问题

  • ¥15 求修改代码,图书管理系统
  • ¥15 请问有没求偏多标签数据集yeast,reference,recreation,scene,health数据集。
  • ¥15 传感网应用开发单片机实训
  • ¥15 Delphi 关于sAlphaImageList使用问题
  • ¥15 寻找将CAJ格式文档转txt文本的方案
  • ¥20 数电设计提问求帮助,出租车计费器
  • ¥15 shein测试开发会问些啥我是写java的
  • ¥15 关于#单片机#的问题:我有个课程项目设计,我想在STM32F103veTX单片机,M3主控模块上设计一个程序,在Keil uVision5(C语言)上代码该怎么编译?(嫌钱少我可以加钱,急急急)
  • ¥15 opnet仿真网络协议遇到问题
  • ¥15 在安装python的机器学习程序包scikit-learn(1.1版本)时遇到如下问题