import java.net.*;
import java.io.*;
public class Tomcat extends Thread {
int listenPort=80; //要检测的端口号
String url = "";
String str="";
public void setstr(){
str="GET / HTTP/1.0\r\n";
str+="\r\n";
str+="Accept: image/gif, image/x-xbitmap, image/jpeg, image peg, application nd.ms-powerpoint, application nd.ms-excel, application/msword, application/x-shockwave-flash, */* \r\n";
str+="Accept-Language: zh-cn \r\n";
str+="Accept-Encoding: gzip, deflate\r\n";
str+="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1) \r\n";
str+="Connection: Keep-Alive \r\n";
}
public void setListenPort(int listenPort) {
this.listenPort = listenPort;
}
public int getListenPort() {
return listenPort;
}
public Tomcat(String url) {
this.url = url;
}
//判断是否停止监听
boolean isStopListen = false;
//执行一个线程,线成不断的判断tomat是否停止,如果停止,则关闭tomcat
//然后isTomcatStop=true,sleep(60000)
public void run() {
while (!isStopListen) {
if (!this.isConnectionTomcat()) {
try {
this.closeTomcat();
this.sleep(10000);
this.closeTomcat();
this.sleep(10000);
this.closeTomcat();
this.sleep(10000);
new RunTomcat();
this.sleep(30000);
}
catch (Exception ex) {
ex.printStackTrace();
}
}
else {
try {
this.sleep(30000);
}
catch (InterruptedException ex1) {
ex1.printStackTrace();
}
}
}
}
//关闭tomcat
public void closeTomcat() throws Exception {
Process process = Runtime.getRuntime().exec("shutdown.bat");
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(process.getInputStream()));
}
//判断是否连接到80断口
public boolean isConnectionTomcat() {
Socket so = null;
setstr();
try {
so = new Socket("localhost", listenPort);
so.setSoTimeout(5000);
OutputStream out=so.getOutputStream();
out.write(str.getBytes());
out.flush();
InputStream in=so.getInputStream();
byte[] receiveByte=new byte[1000];
int num=in.read(receiveByte);
//System.out.println(new String(receiveByte,0,num));
if (num<=5)throw new Exception("读取失败");
so.close();
}
catch (Exception ex) {
System.out.println("工作可能有异常"+listenPort+ex);
try{
this.sleep(1000);
so = new Socket("localhost", listenPort);
so.setSoTimeout(5000);
OutputStream out=so.getOutputStream();
out.write(str.getBytes());
out.flush();
InputStream in=so.getInputStream();
byte[] receiveByte=new byte[1000];
int num=in.read(receiveByte);
if (num<=5)throw new Exception("读取失败");
//System.out.println(new String(receiveByte,0,num));
so.close();
}catch(Exception e){
System.out.println("工作出现异常!!!!!!!");
return false;
}
}
finally {
try {
if (so != null) {
so.close();
}
}
catch (IOException ex1) {
ex1.printStackTrace();
}
}
System.out.println("正常启动");
return true;
}
//打开tomcat
public class RunTomcat
extends Thread {
public RunTomcat() {
this.start();
}
public void run() {
try {
Process process = Runtime.getRuntime().exec("startup.bat");
BufferedReader bufferedReader = new BufferedReader(new
InputStreamReader(process.getInputStream()));
}
catch (IOException ex) {
ex.printStackTrace();
}
}
}
//主线程不断循环,发现isTomcatStop=true,启动tomcat
public static void main(String args[]) {
if(args.length==0){
System.out.println("命令行为:java Tomcat port -请指定监听端口" );
return;
}
Tomcat s = new Tomcat("");
try {
s.setListenPort(Integer.parseInt(args[0]));
}
catch (NumberFormatException ex) {
System.out.println("输入的第一个参数必须为端口号,端口号为tomcat服务端口号(https为:443,http为:80)。必须好必须唯一个小于65535的正整数");
}
s.start();
}
}
分享到:
相关推荐
2. **异常检测**:当Tomcat服务出现异常时,监控程序需要能够识别这些异常。这可能包括检查服务器的日志文件,分析特定错误代码或异常堆栈信息,或者通过自定义健康检查接口来判断服务是否出现问题。 3. **自动重启...
在企业环境中,由于代码的复杂性和不可预知性,服务器崩溃或无响应是常见现象,而这个监控程序的自动重启功能,可以在检测到异常情况后迅速恢复服务,减少业务中断时间,从而提高系统的可用性。 【标签】"tomcat...
程序通过访问http://localhost和输入的Tomcat端口来访问Tomcat主页,如果获取到返回串证明Tomcat运行中,否则检测JAVA.EXE进程是否存在。 Tomcat启动后系统进程列表中出现的进程名为JAVA.EXE而不是Tomcat之类的名称...
当Tomcat由于各种原因意外停止时,监护程序会检测到这一情况并自动执行重启操作,从而避免了服务中断可能带来的损失。 守护程序(或监护程序)在计算机系统中扮演着重要角色,它们通常作为后台服务运行,监控其他...
- **类结构**:程序主要由`CheckTomcat`类构成,其中包含了`checkTomcatIsAlive`方法用于检测Tomcat状态,以及`main`方法作为程序入口。 - **代码示例**: - **初始化配置**:在`main`方法中初始化`monitorurl`和`...
5. **部署WAR文件**:将WAR文件复制到Tomcat的webapps目录下,Tomcat会自动检测并解压该文件。 6. **启动Tomcat**:启动Tomcat服务器,Web Service应该现在可以在指定的URL下访问了。 7. **测试Web Service**:...
Linux 64位环境下的Tomcat 7是Java应用程序服务器,专用于运行Web应用程序,包括动态网站和Web服务。Tomcat 7是Apache软件基金会Jakarta项目的一部分,它基于Servlet和JSP规范,提供了一个轻量级、高性能的平台来...
Tomcat会自动检测并启动这些应用。 标题中的"多程序配置方法"主要涉及到的是Tomcat的虚拟主机(Virtual Host)配置。虚拟主机允许你在同一个IP地址和端口上运行多个独立的网站,通过识别不同的主机名来区分。在`...
### Windows 下 Tomcat 的守护进程与心跳检测程序详解 在 IT 领域,特别是 Java Web 开发中,Apache Tomcat 是一个非常重要的轻量级应用服务器,它主要用于部署 Java Web 应用程序。在实际生产环境中,为了保证服务...
【标题】"TOMCAT自动检测重启"是一个关键的话题,特别是在服务器管理中,确保应用程序的稳定运行至关重要。TOMCAT,作为Apache软件基金会的开源Java Servlet容器,常常被用来部署Web应用。当TOMCAT服务意外停止时,...
同时,确保`autoDeploy`属性设为`true`,这样Tomcat会在该目录下检测新的WAR文件并自动部署。 ```xml ``` **2. 安全性考虑** 由于远程部署涉及网络传输,因此安全至关重要。默认情况下,Tomcat的管理接口(例如...
本资料包包含了“tomcat集群配置”的程序及文档,提供了现成的例子,帮助我们理解和实践Tomcat集群的搭建与管理。 首先,我们需要了解Tomcat集群的基本概念。集群是指多个Tomcat实例协同工作,它们共享相同的会话...
在IT运维领域,确保应用程序的稳定运行至关重要,尤其是在企业级应用服务器如Apache Tomcat上运行的服务。本话题聚焦于在Windows平台上对Tomcat的运行状况进行自动监控,并在出现异常时进行自动重启,以保障服务的...
Tomcat是一款流行的开源Java Servlet容器,广泛用于部署Java Web应用程序。由于其在许多企业环境中扮演着核心角色,因此对它的性能进行实时监测至关重要。 描述中的“probe----tomcat 性能检测软件 内含使用的相关...
5. **部署应用**:应用程序通常以WAR(Web ARchive)格式部署到Tomcat的`webapps`目录下,Tomcat会自动检测并解压WAR文件,或者用户也可以通过管理界面进行部署。 6. **性能优化**:Tomcat的性能可以通过调整线程池...
Tomcat会自动检测新文件并进行部署。如果希望在特定的Context Path下运行应用,可以创建一个`META-INF/context.xml`文件来指定。 **4. 启动与停止Tomcat** 在Tomcat的bin目录下,有对应的启动脚本(如`startup.bat...
- **webapps**:这是部署Web应用程序的地方,只需将WAR文件或解压的目录放入此目录,Tomcat会自动检测并启动应用。 - **work**:存储编译后的JSP文件和应用运行时生成的临时文件。 使用Apache Tomcat 7.0.52解压版...
内存泄漏是指程序在申请内存后,无法释放已不再使用的内存空间。在Tomcat中,如果长时间运行的应用不断积累不再使用的对象,就会导致内存占用持续增长,进而引发内存泄漏。 2. **Tomcat内存管理** Tomcat使用Java...
Linux下 tomcat的守护进程、心跳程序 自行重启TOmcat服务
6. **webapps**:默认的应用部署目录,将Web应用程序的WAR文件或已展开的目录放在这里,Tomcat会自动检测并部署它们。 7. **work**:存放JSP编译后的类文件和Servlet生成的临时文件。 在使用这个免安装版本的Tomcat...