`
netfork
  • 浏览: 488505 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

【转载】监视Tomcat宕机并重启Tomcat

阅读更多
下面的代码从网上找的,稍加了点注释。

/**
 * 监视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();
		}
	}
}

分享到:
评论
1 楼 nbsven 2010-03-22  
用UFO做网站的web server可以实现对网站监控,随时查看网站的运营状态,UFO内置的
UFO Probe实时监测UFO Web Server的重要运行数据。UFO的性能可查看:
http://www.oschina.net/bbs/thread/4309
http://www.oschina.net/bbs/thread/4310

相关推荐

    tomcat宕机重启脚本

    tomcat宕机重启脚本,比较简单的一种设置

    shell监控tomcat进程宕机重启

    shell监控tomcat进程,宕机重启,其他服务也是类似。

    java监听Tomcat是否宕机

    java监听Tomcat是否宕机 可以重启

    tomcat宕机重启

    此程序用于运行在服务器中,预留在内存中,监控...(TOMCAT运行状态) 原理即间隔性的访问指定的服务器中运行的网站,如果能够打开就正常,打不开就执行重启命令 使用前,请修改conf.properties文件,其中有各项配置

    JAVA实现监测tomcat是否宕机及控制重启的方法

    本文提供的实例代码展示了如何使用Java来检测Tomcat是否宕机,并在检测到宕机时自动控制重启,这对于保障服务的可用性至关重要。以下是该方法的核心知识点: 1. **HTTP连接检查**:首先,通过创建一个`URL`对象并...

    tomcat 监控 及自动重启

    2. **使用Supervisor**:Supervisor是一个进程管理工具,可以监控并自动重启崩溃的进程,包括Tomcat。配置Supervisor后,当Tomcat意外退出时,它会自动尝试重新启动。 3. **使用Systemd服务**:在支持Systemd的...

    Shell脚本定时监控tomcat,服务挂掉自动重启

    Shell脚本定时监控tomcat,服务挂掉自动重启

    自动监控 Windows平台Tomcat运行监控并自动重启

    本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...

    tomcat自动重启脚本

    linux系统tomcat自动重启脚本:判断监控 tomcat日志catalina.out超过一定限度 自动重启tomcat

    检测Tomcat运行状态-自动重启

    - **自动重启处理**:虽然原代码中未展示具体的自动重启逻辑,但可以通过创建`RunTomcat`类并调用其`startTomcat`方法来实现重启功能。 ### 三、补充知识点 - **错误处理**:在进行网络通信时,需要妥善处理可能...

    tomcat异常结束自动重启脚本

    本案例中的“tomcat异常结束自动重启脚本”就是针对这一需求的具体解决方案,主要用于确保Tomcat应用服务器在遇到异常情况时能够快速恢复服务,减少因服务器宕机导致的数据丢失和用户体验下降。 Tomcat是一款广泛...

    TOMCAT自动检测重启

    因此,配置一个自动检测并重启TOMCAT的机制是提高系统可靠性的重要步骤。 【描述】中提到的“利用系统进程进行监控”是指通过监测TOMCAT的服务进程来判断其运行状态。在Windows系统中,这通常涉及到使用任务管理器...

    tomcat 定时重启工具

    由于工作需求,本人自己制作的 Tomcat 定时重启小工具,监听Tomcat的CMD运行窗口,计算运行时间,来完成 定时重启任务,配置可以自动临时保存,不生成多余文件。打算在后续版本中加入一个 HTTP监听任务,判断是否宕...

    tomcat运行状态监控(可自动重启windows脚本).zip

    本文将深入探讨如何使用提供的压缩包文件来实现对Tomcat运行状态的监控,并在出现假死或异常停止时进行自动重启。这个解决方案主要依赖于一个批处理脚本"监控tomcat.bat",以及可能需要的辅助工具如"curl.exe"。 ...

    tomcat自动定时重启

    标题 "Tomcat自动定时重启" 涉及到的是如何设置和管理Apache Tomcat服务器,使其能够在特定时间自动重新启动。这通常是出于维护、更新或防止服务器长时间无响应的需求。以下是一些关于Tomcat自动定时重启的重要知识...

    编译class不用重启tomcat

    标题“编译class不用重启tomcat”涉及到的是Java开发中的热部署技术,它允许开发者在不重启应用服务器(如Tomcat)的情况下,实时更新代码并看到变化的效果,从而极大地提高了开发效率。这篇博客可能介绍了如何使用...

    java代码启动tomcat

    下面,我们将详细介绍如何使用 Java 代码来启动 Tomcat 服务器,并实现远程控制 Tomcat。 标题: Java 代码启动 Tomcat 描述: Java 实现 Tomcat 的自启动和关闭,可实现远程控制 Tomcat 标签: Java Tomcat ...

    检测Tomcat等网站假死,自动重启脚本

    检测Tomcat等网站假死,自动重启脚本,方便大家下载,可以参考修改。

    tomcat服务器宕机解决方案

    主要介绍了tomcat服务器宕机解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    自动重启Tomcat脚本

    为确保服务不间断,可以创建自动重启脚本来监测和恢复Tomcat的状态。下面我们将详细讨论如何实现这个功能,以及提供的两个脚本的作用。 首先,"自动重启Tomcat脚本"是一个批处理文件,它定期检查Tomcat的运行状况。...

Global site tag (gtag.js) - Google Analytics