来源
:http://java0note.blog.51cto.com/469557/110003
理很简单。 在机器上做一个测试的文件。如果我们的程序能够读取到这个文件,则证明运行正常
import java.net.URL;
import java.net.URLConnection;
import java.util.Date;
/**
* *
*/
public class Detector {
private static void keepTomcatAlive() throws NullPointerException {
String s;
String t = new String("tomcat5.exe");
boolean isTomcatAlive = false;
java.io.BufferedReader in;
try {
URL url = new URL("http://localhost/heartbeat.htm");
URLConnection con = url.openConnection();
in = new java.io.BufferedReader(new java.io.InputStreamReader(con.getInputStream()));
con.setConnectTimeout(1000);
con.setReadTimeout(4000);
while ((s = in.readLine()) != null) {
if (s.length() > 0) {
// 如果能够读取到页面则证明可用
return;
}
}
in.close();
} catch (Exception ex) {
}
try {
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 \"Apache Tomcat\"");
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 \"Apache Tomcat\"");
} catch (Exception e) {
e.printStackTrace();
}
try {
java.lang.Process p = java.lang.Runtime.getRuntime().exec("net start \"Apache Tomcat\"");
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();
}
}
public static void main(String[] args) {
while (true) {
try {
Detector.keepTomcatAlive();
Thread.sleep(30000);
} catch (Exception ex) {
}
}
}
}
远程重启 tomcat
测试成功,jsp 代码如下:
<%@ page language="java" contentType="text/html; charset=GB18030" pageEncoding="GB18030"%>
<%
Runtime run = Runtime.getRuntime();
Process pro = run.exec("d:\\tomcat\\bin\\restart.bat"); // 替换为你的路径,linux下为.sh , 如果单独调用 shutdown.bat 就关闭了。 单独启动没戏,因为tomcat已经停了
%>
restart.bat
call shutdown.bat
delay.exe 5
call startup.bat
唯一的问题,你需要一个延迟程序,就是那个 delay.exe 5, 否则可能还没有关闭就启动了,80端口被占用
如果是服务,就更简单了,restart.bat 里面写上 net stop Tomcat 和 net start Tomcat 就可以了!
分享到:
相关推荐
- **类结构**:程序主要由`CheckTomcat`类构成,其中包含了`checkTomcatIsAlive`方法用于检测Tomcat状态,以及`main`方法作为程序入口。 - **代码示例**: - **初始化配置**:在`main`方法中初始化`monitorurl`和`...
本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的连续性。下面将详细讨论这个主题。 首先,我们要理解Tomcat是什么。Tomcat是一款开源的Java Servlet容器,...
注意,虽然自动重启脚本能提高服务的稳定性,但频繁的重启可能是系统问题的表现,应查找并解决根本原因,避免频繁重启导致的数据丢失或服务不稳定。在实际部署时,还需要考虑资源限制,避免无休止的重启循环。同时,...
4. **检测Tomcat状态** - 类名:`Detector` - 方法名:`keepTomcatAlive` - 功能:检查Tomcat是否处于运行状态,如果未运行,则自动重启。 - 实现方法:尝试访问一个已知的URL(例如`http://www.mowker.com/`)...
为了提高系统的可靠性和稳定性,开发了一个Java实现的监控程序,它的主要功能是监听服务程序的状态,如果检测到程序意外终止或挂掉,它会自动重启该程序,并且向开发人员发送短信通知,以便快速了解问题并采取相应的...
如果遇到XML文件未被自动检测到更新的情况,可以检查上述步骤是否完整,并尝试手动触发IDEA的构建或清理缓存。同时,关注官方文档和社区解答,如CSDN问答频道,也可以帮助我们找到更多解决方案。
在企业环境中,由于代码的复杂性和不可预知性,服务器崩溃或无响应是常见现象,而这个监控程序的自动重启功能,可以在检测到异常情况后迅速恢复服务,减少业务中断时间,从而提高系统的可用性。 【标签】"tomcat...
完成以上配置后,当你在MyEclipse中修改类文件或JSP文件并保存时,MyEclipse应该能自动触发Tomcat的热部署,从而使更改立即生效,无需手动重启服务器。然而,需要注意的是,虽然这种方法可以提高开发效率,但在生产...
本文提供的实例代码展示了如何使用Java来检测Tomcat是否宕机,并在检测到宕机时自动控制重启,这对于保障服务的可用性至关重要。以下是该方法的核心知识点: 1. **HTTP连接检查**:首先,通过创建一个`URL`对象并...
【描述】中提到的"Tomcat 服务器监控软件 1.2"是一个专门设计用来监控Tomcat服务器的应用,它具备自动重启功能,可以在检测到Tomcat服务无响应时自动恢复服务。这暗示了软件包含了一些关键的监控指标,如CPU使用率、...
为了解决这个问题,我们可以编写一个Shell脚本,这个脚本会检查Tomcat服务的状态,并在检测到服务未运行或异常时自动重启服务。脚本可能包含以下部分: 1. **检查服务状态**:使用`ps -ef | grep tomcat`命令检查...
通过定时运行该脚本,可以有效地监控 Tomcat 服务的状态,并在服务异常时自动重启,大大提高了系统的稳定性和可用性。当然,在实际部署过程中,还需要根据具体的环境进行适当的调整和优化。例如,可以通过外部配置...
1. 自动部署:当开发者将更新后的WAR文件或WEB-INF目录下的文件放入指定的部署目录(如webapps)时,Tomcat插件会自动检测到这些变化,并自动重新部署应用,无需重启服务器。 2. 热部署:在应用运行过程中,Tomcat...
但是,通过配置可以开启热部署功能,即在不重启服务器的情况下,Tomcat能够识别到代码的更改,并自动重新加载受影响的部分。 #### 知识点二:修改server.xml配置文件 要实现Tomcat的自动加载功能,首先需要修改...
3. **实时更新**:在开发阶段,当源代码发生变化时,TomcatPlugin可以自动检测并重新部署应用,实现了热更新,无需重启服务器,节省了大量时间。 4. **调试支持**:提供强大的调试工具,可以在Eclipse内部设置断点...
现在,每当你的代码有更改,JRebel会自动检测并应用这些更改,无需手动重启服务器。 6. 使用操作文档:压缩包中的操作文档应该提供了详细的步骤和可能遇到的问题解决方案,建议仔细阅读并按照指导操作。 通过以上...
这个过程涉及到了源码管理和自动化构建工具Maven,以及集成开发环境Eclipse中的服务器适配器Tomcat,它们共同助力实现项目的热部署,即代码修改后无需重启服务器即可看到更新效果。 首先,Maven是一个强大的项目...
4. **热部署**: 当项目代码有更改时,插件能自动检测并更新已部署的应用,无需每次修改后都手动重启服务器。 5. **日志查看**: 可以直接在Eclipse内部查看Tomcat的日志输出,便于调试和问题定位。 6. **配置管理**...
9. **热部署**:Tomcat支持热部署,当检测到Web应用目录下的更改时,会自动重新加载应用,无需重启服务器。 10. **跨平台性**:由于是Java技术,Tomcat 7.0.73在64位Windows、Linux、macOS等系统上都能运行,只需...
本文将详细介绍一个用于监控并自动重启Tomcat服务的Shell脚本。 #### 二、脚本核心功能 该脚本的核心功能是: 1. **获取Tomcat进程ID**:通过`ps`命令结合`grep`等工具,精确获取当前正在运行的Tomcat实例的进程ID...