下面的代码从网上找的,稍加了点注释。
/**
* 监视Tomcat是否宕机,如果宕机就会自动重启
*/
package cn.ipcat;
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
public class Detector {
public static void main(String[] args) {
while (true) {
try {
System.out.println(" <" + new Date() + "> 检查服务器是否宕机...");
Detector.keepTomcatAlive();
// 每10分钟执行一次
Thread.sleep(600000);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
private static void keepTomcatAlive() throws NullPointerException {
String s;
String t = new String("tomcat6.exe");
boolean isTomcatAlive = false;
java.io.BufferedReader in;
try {
URL url = new URL("http://www.ipcat.cn");
URLConnection con = url.openConnection();
in = new java.io.BufferedReader(new java.io.InputStreamReader(con
.getInputStream()));
con.setConnectTimeout(5000);
con.setReadTimeout(10000);
while ((s = in.readLine()) != null) {
if (s.length() > 0) {
// 如果能够读取到页面则证明可用
System.out.println(" <" + new Date() + "> 正常!");
return;
}
}
in.close();
} catch (Exception ex) {
ex.printStackTrace();
}
try {
// 判断任务列表中是否存在tomcat6.exe进程
// 如果存在且不响应,这就表明tomcat已经宕机了,需要重启tomcat
java.lang.Process p = java.lang.Runtime.getRuntime().exec(
"tasklist");
in = new java.io.BufferedReader(new java.io.InputStreamReader(p
.getInputStream()));
while ((s = in.readLine()) != null) {
if (s.startsWith(t)) {
isTomcatAlive = true;
break;
}
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
if (isTomcatAlive) {
System.out.println(" <" + new Date()
+ "> Tomcat is alive but not response!");
stopTomcat();
}
startTomcat();
}
public static void stopTomcat() {
try {
java.lang.Process p = java.lang.Runtime.getRuntime().exec(
"net stop tomcat2 /y");
java.io.BufferedReader in = new java.io.BufferedReader(
new java.io.InputStreamReader(p.getInputStream()));
String s;
String t = "成功停止";
boolean restart = false;
while ((s = in.readLine()) != null) {
if (s.indexOf(t) != -1) {
restart = true;
break;
}
}
System.out.println(" <" + new Date() + "> Tomcat is stop "
+ (restart ? "OK" : "ERROR"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void startTomcat() {
try {
java.lang.Process p = java.lang.Runtime.getRuntime().exec(
"net stop tomcat2 /y");
} catch (Exception e) {
e.printStackTrace();
}
try {
java.lang.Process p = java.lang.Runtime.getRuntime().exec(
"net start tomcat2");
java.io.BufferedReader in = new java.io.BufferedReader(
new java.io.InputStreamReader(p.getInputStream()));
String s;
String t = "启动成功";
boolean restart = false;
while ((s = in.readLine()) != null) {
if (s.indexOf(t) != -1) {
restart = true;
break;
}
}
System.out.println(" <" + new Date() + "> Tomcat is start "
+ (restart ? "OK" : "ERROR"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
tomcat宕机重启脚本,比较简单的一种设置
shell监控tomcat进程,宕机重启,其他服务也是类似。
java监听Tomcat是否宕机 可以重启
此程序用于运行在服务器中,预留在内存中,监控...(TOMCAT运行状态) 原理即间隔性的访问指定的服务器中运行的网站,如果能够打开就正常,打不开就执行重启命令 使用前,请修改conf.properties文件,其中有各项配置
本文提供的实例代码展示了如何使用Java来检测Tomcat是否宕机,并在检测到宕机时自动控制重启,这对于保障服务的可用性至关重要。以下是该方法的核心知识点: 1. **HTTP连接检查**:首先,通过创建一个`URL`对象并...
2. **使用Supervisor**:Supervisor是一个进程管理工具,可以监控并自动重启崩溃的进程,包括Tomcat。配置Supervisor后,当Tomcat意外退出时,它会自动尝试重新启动。 3. **使用Systemd服务**:在支持Systemd的...
Shell脚本定时监控tomcat,服务挂掉自动重启
本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...
linux系统tomcat自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat
- **自动重启处理**:虽然原代码中未展示具体的自动重启逻辑,但可以通过创建`RunTomcat`类并调用其`startTomcat`方法来实现重启功能。 ### 三、补充知识点 - **错误处理**:在进行网络通信时,需要妥善处理可能...
本案例中的“tomcat异常结束自动重启脚本”就是针对这一需求的具体解决方案,主要用于确保Tomcat应用服务器在遇到异常情况时能够快速恢复服务,减少因服务器宕机导致的数据丢失和用户体验下降。 Tomcat是一款广泛...
在Windows操作系统中,为了实现Apache Tomcat服务器的自动启动,我们可以编写VBScript(Visual Basic Script)脚本。VBScript是一种轻量级的脚本语言,常用于Windows系统的批处理任务,如定时启动服务、程序等。下面...
因此,配置一个自动检测并重启TOMCAT的机制是提高系统可靠性的重要步骤。 【描述】中提到的“利用系统进程进行监控”是指通过监测TOMCAT的服务进程来判断其运行状态。在Windows系统中,这通常涉及到使用任务管理器...
由于工作需求,本人自己制作的 Tomcat 定时重启小工具,监听Tomcat的CMD运行窗口,计算运行时间,来完成 定时重启任务,配置可以自动临时保存,不生成多余文件。打算在后续版本中加入一个 HTTP监听任务,判断是否宕...
本文将深入探讨如何使用提供的压缩包文件来实现对Tomcat运行状态的监控,并在出现假死或异常停止时进行自动重启。这个解决方案主要依赖于一个批处理脚本"监控tomcat.bat",以及可能需要的辅助工具如"curl.exe"。 ...
标题 "Tomcat自动定时重启" 涉及到的是如何设置和管理Apache Tomcat服务器,使其能够在特定时间自动重新启动。这通常是出于维护、更新或防止服务器长时间无响应的需求。以下是一些关于Tomcat自动定时重启的重要知识...
标题“编译class不用重启tomcat”涉及到的是Java开发中的热部署技术,它允许开发者在不重启应用服务器(如Tomcat)的情况下,实时更新代码并看到变化的效果,从而极大地提高了开发效率。这篇博客可能介绍了如何使用...
下面,我们将详细介绍如何使用 Java 代码来启动 Tomcat 服务器,并实现远程控制 Tomcat。 标题: Java 代码启动 Tomcat 描述: Java 实现 Tomcat 的自启动和关闭,可实现远程控制 Tomcat 标签: Java Tomcat ...
检测Tomcat等网站假死,自动重启脚本,方便大家下载,可以参考修改。
主要介绍了tomcat服务器宕机解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下