windows下tomcat挂掉自动恢复

因为去年过年和平时的一次晚上,被我们主管叫着看一下OA系统的问题,说是不能访问了,其实问题很简单,就是Tomcat宕机了,重启一下就好了。但是为了防止这种问题再次发生,而且这个星期没什么需求到我这来,比较闲,但是每周又要写周报,所以坐着玩是不可能的,就准备搞个故障恢复。

思路很简单

检测OA是不是能访问,如果不能,重启

实现

创建一个vb脚本,名字随意,我的叫tomcat.vbs,新增内容为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
on error resume Next

set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.CurrentDirectory="E:\wuqihuan\apache-tomcat-7.0.93\bin"

set fso=createobject("scripting.filesystemobject")

set http = CreateObject("Microsoft.XMLHTTP")

http.open "GET","http://localhost:8080?a=" & now,false

http.send

if http.Status <> 200 Then

WshShell.Run("shutdown.bat")

WScript.Sleep(10000)
WshShell.CurrentDirectory="E:\wuqihuan\doc"

WshShell.Run("starttomcat.bat")

if (fso.fileexists("E:\tomcat_restart.txt")) then

set file=fso.opentextfile("E:\tomcat_restart.txt",8,true)
file.write "error code:"
file.write http.Status
file.writeline "tomcat at"
file.writeline now
file.writeline "restart one time"
file.writeblanklines 2
file.close
else

set file=fso.createtextfile( "E:\tomcat_restart.txt",2,true)


file.write "error code:"
file.write http.Status
file.writeline "tomcat at "
file.writeline now
file.writeline "restart one time"
file.writeblanklines 2
file.close
end if
end if
  • 其中,本地测试环境中有环境变量,正式环境中没有(是用的脚本添加的),正式环境中有一些其他的操作,所以不能单单只是有一个tomcat启动的bat文件,正式环境中有一个批处理文件,用来启动tomcat和进行一些复制和设置环境变量的操作.所以为了模拟这种,我新建了一个starttomcat的批处理文件.

加上windows的计划任务,每五分钟检测一次,完美解决

plan

执行截图

img

参考链接

https://www.vbsedit.com/html/6f28899c-d653-4555-8a59-49640b0e32ea.asp
https://www.tek-tips.com/viewthread.cfm?qid=1324576
http://www.informit.com/articles/article.aspx?p=1187429&seqNum=5
原始url已经不知道去哪了

0%