赞
踩
在windows生可以使用脚本利用Tomcat的shutdown.bat和startup.bat脚本来重启Tomcat。但是有时候会一不小心关闭startup.bat窗口而引起的麻烦,说实话windows环境上部署服务器运行效率有点低。
先附上使用Tomcat自带脚本启动的bat脚本:
@echo off ::cd /d "D:\java\Tomcat9\bin" cd /d "D:\java\Tomcat9\bin" title Tomcat重新启动脚本 call "shutdown.bat" ping -n 6 127.1 >nul wmic process where name="java.exe" get processid,commandline |findstr /i "tomcat" ># setlocal enabledelayedexpansion for /f "delims=*" %%i in (#) do ( set var=%%i set var=!var:start =#! for /f "tokens=2 delims=#" %%a in ("!var!") do ( set tomcatpid=%%a ) ) del # >nul if defined tomcatpid taskkill /pid !tomcatpid! ping -n 3 127.1 >nul call "startup.bat" exit
解决方法:
将tomcat注册为windows上服务,这样就可以通过cmd窗口启动tomcat服务器,当关闭窗口时服务也会一直运行
前置条件:
Tomcat在windows上能正常运行。然后才可以进行以下步骤:
管理员运行cmd窗口。然后进入到Tomcat安装目录下的bin目录中,输入net start tomcat9或net start tomcat就可以运行tomcat服务了,窗口这回关闭了,tomcat服务器一会一直运行
停止tomcat服务输入net stop tomcat9命令
接下来就是写重启Tomcat的bat脚本了:
@echo off >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system" if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin ) :UACPrompt echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs" echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs" "%temp%\getadmin.vbs" exit /B :gotAdmin if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) pushd "%CD%" CD /D "%~dp0" ::cd /d "D:\java\Tomcat9\bin" cd /d "D:\java\Tomcat9\bin" title Tomcat重新启动脚本 net stop tomcat9 ping -n 6 127.1 >nul wmic process where name="java.exe" get processid,commandline |findstr /i "tomcat" ># setlocal enabledelayedexpansion for /f "delims=*" %%i in (#) do ( set var=%%i set var=!var:start =#! for /f "tokens=2 delims=#" %%a in ("!var!") do ( set tomcatpid=%%a ) ) del # >nul if defined tomcatpid taskkill /pid !tomcatpid! ping -n 3 127.1 >nul net start tomcat9 exit
到这里就大功告成了。
--------------------------------------补充-------------------------------------
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (goto UACPrompt) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
::cd /d "D:\java\Tomcat9\bin"
cd /d "D:\java\Tomcat9\bin"
脚本中的这一段代码是让脚本命令以管理员身份运行。因为重启命令必须是管理员身份才可以。要不然会拒绝访问的。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。