在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前的需求。

一、设置tomcat定时启动

1,首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显示名称,一般可使用默认值。

set SERVICE_NAME=Tomcat7 set PR_DISPLAYNAME=Apache Tomcat

【然后修改jvm大小,搜索到--JvmMs 128 --JvmMx 256 进行修改,因为做成服务启动,启动的时候就不会用到 catalina.bat,也就不会读取里面的jvm设置了。】(可选,可以不设置)

然后运行cmd命令窗口,cd 到tomcat的bin目录下,运行下面的命令 service.bat install 运行成功过后,会提示服务已经安装成功。

2,制作重启脚本restart.bat,文件内容如下 net stop Tomcat7 net start Tomcat7

3,利用控制面板里面的“任务计划”设置第2步的脚本运行时间计划

4,如果想删除服务,也很简单,先把服务停掉,然后在cmd窗口运行下面的命令即可,后面那个Tomcat7是服务名。 sc delete Tomcat7

需要注意的是,需要先把服务停掉,才能一次删除成功,或者删除之后再停止服务,就会发现服务已经删除成功了。

二、监听tomcat

只要运行start.bat即可,相关配置在config.properties文件中,默认即可, 如果服务名不对应就修改关闭和启动命令的服务名即可:net start 【Tomcat7】括号中服务名,然后运行start.bat

下面是具体的监听代码:

首先是监听类TomcatMonitor .java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.util.Properties;
/*** @describe:TomcatMonitor.java* * @date 2016-7-4* @author liuweilong*/
public class TomcatMonitor implements Runnable{String start=""; //系统命令 启动String stop=""; //系统命令 关闭String testHttp="";  //测试连接地址int testIntervalTime=1;//测试连接间隔时间,单位为秒int waitIntervalTime=2; //等待测试间隔时间,单位为秒int testTotalCount=5; //测试连接总次数Thread thread=null;public TomcatMonitor(){InputStream in = TomcatMonitor.class.getResourceAsStream("config.properties");Properties p = new Properties();try {p.load(in);stop=p.getProperty("stop");start=p.getProperty("start");testHttp=p.getProperty("testHttp");testIntervalTime=Integer.parseInt(p.getProperty("testIntervalTime"));waitIntervalTime=Integer.parseInt(p.getProperty("waitIntervalTime"));testTotalCount=Integer.parseInt(p.getProperty("testTotalCount"));          } catch (Exception e) {e.printStackTrace();}System.out.println("*******************初始化成功!*******************");thread=new Thread(this);thread.start();       }public void run() {System.out.println("正在监控中...");   int testCount=0;while(true){testCount=0;testCount++;            boolean isrun=test();System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));                while(!isrun){if(testCount>=testTotalCount)break;try {thread.sleep(testIntervalTime*1000);} catch (InterruptedException e) {e.printStackTrace();}testCount++;System.out.println("正在启动测试连接,尝试连接次数为:"+testCount+",结果为:"+(isrun==false?"失败.":"成功!"));               isrun=test();}if(!isrun){              try{      //关闭tomcat服务  Process proc = Runtime.getRuntime().exec(stop);thread.sleep(5000);//启动tomcat服务System.out.println("测试连接失败,正在重启tomcat");Process p=Runtime.getRuntime().exec(start); System.out.println("重启tomcat成功");}catch(Exception e){e.printStackTrace();System.out.println("重启tomcat异常,请查看先关错误信息。。。。。");}                }try {thread.sleep(waitIntervalTime*1000);} catch (InterruptedException e) {e.printStackTrace();}isrun=test();}        }public boolean test(){URL url=null;       try {url = new URL(testHttp);} catch (MalformedURLException e) {e.printStackTrace();}try {URLConnection urlConn=url.openConnection();urlConn.setReadTimeout(15000);BufferedReader reader = new BufferedReader(new InputStreamReader( urlConn.getInputStream()));            //实例化输入流,并获取网页代码String s;                                       while ((s = reader.readLine()) != null) {return true;   }                       } catch (Exception e) {return false;}return false;}public static void main(String[] args) throws Exception{TomcatMonitor tm=new TomcatMonitor();}}

然后是对应的配置文件config.properties:

#系统命令 启动
start=net start Tomcat7#关闭
stop = net stop Tomcat7#测试连接总次数
testTotalCount=3#连接失败时,再次检测时间间隔,单位为秒
testIntervalTime=3#连接超时时间,即多少秒tomcat没响应视为宕机,单位为秒
connectionTimeout=15#tomcat启动时间,防止在tomcat尚未启动完成的时候,程序又去检验tomcat状态,造成尚未启动完成又重新启动,单位为秒
tomcatStartTime=600#测试连接地址
testHttp=http://127.0.0.1:8080#正常情况下,每次检测间隔时间,单位为秒
waitIntervalTime=30

最后是启动的start.bat:

java -cp . TomcatMonitor

tomcat宕机自动重启和每日定时启动tomcat【工具包系列】相关推荐

  1. tomcat宕机自动重启和每日定时启动tomcat

    在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前 ...

  2. Tomcat之——宕机自动重启和每日定时启动tomcat

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/60587663 在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现 ...

  3. java tomcat 监控_java程序监控tomcat实现项目宕机自动重启并发送邮件提醒

    最近由于老项目频繁挂掉,由于项目经过多批人之手,短时间难以定位问题,所以只好写一个监控程序. 时间比较紧半天时间,而且水平有限大神勿喷,有好的方法还请赐教. 1.问题描述:分两种情况1.1.tomca ...

  4. 服务器宕机 自动重启,服务器宕机重启利弊

    由于资源有限.操作不当.系统错误等多种原因,常会导致服务器宕机.并且大多服务器宕机状况的出现,唯快速有效的解决方法就是,重启服务器,那么服务器宕机重启利弊有哪些呢?下面就一起随佰佰安全网小编来了解一下 ...

  5. Tomcat宕机检测以及宕机自启方法

    [颜色说明:橙色 为 命令   绿色 为 代码 ] 一. 首先在本地创建一个monitorTomcat .sh的脚本文件,写下以下脚本 #!/bin/sh # 获取tomcat进程ID  /usr/l ...

  6. tomcat宕机无法响应问题研究解决

    本人所在公司有一个系统部署单个tomcat上,该系统由前开发人员开发.本人于两年前接手,在对该系统进行开发运维过程中,先后解决了两种tomcat宕机无法提供服务情况,具体如下: (1)JVM 内存不足 ...

  7. 服务器宕机自动dns,有哪些同时支持智能解析和宕机自动切换的DNS服务?

    RT 可以支持按区域.运营商线路智能解析,服务器宕机自动切换解析. 免费或者价格不太高的.  目前了解到华为云完全免费,唯独没有宕机监控. DNSPOD如果想实现上述功能,套餐价格不菲-- 求大佬们推 ...

  8. 解决启动虚拟机进入系统时宿主机自动重启状态问题

    解决启动虚拟机进入系统时宿主机自动重启状态问题 启动虚拟机进入安装的系统时宿主机突然进入重启状态,这情况解决呢? 开启进入虚拟机系统,突然宿主机自动进入重启状态,连续试过很多次,情况都一样. 开机之后 ...

  9. 服务器为什么会“宕机”?重启服务器有什么危害?

    什么是"宕机" 服务器宕机的原因: 重启服务器的危害: 什么是"宕机" 宕机,指操作系统无法从一个严重系统错误中恢复过来,或系统硬件层面出问题,以致系统长时间无 ...

最新文章

  1. C++中const的用法
  2. Js提交表单的两种方法
  3. socket编程TCP通信
  4. Java并发教程–阻塞队列
  5. Python协程--生成器(实现多任务)
  6. 信息学奥赛一本通(1007:计算(a+b)×c的值)
  7. HP 3PAR公用存储的妙用
  8. 基于Spring Security的认证授权_认证原理_授权流程_Spring Security OAuth2.0认证授权---springcloud工作笔记126
  9. 李笑来登顶 GitHub TOP 榜!币圈大佬要教程序员如何自学编程
  10. 关于M1芯片版Mac安装Photoshop后储存psd时出现程序错误提示的解决方法
  11. JDBC和数据库连接池的关系
  12. python设置路径变量_python – Bokeh中设置的静态路径变量在哪里(对于create_html_snippet)...
  13. 全球各地区当前对电子烟行业的政策如何?
  14. C/C++实现荷兰国旗问题
  15. 王海婷也可以编程,厚脸皮谈自己的一些事情
  16. 教你用快捷键 以管理员身份运行cmd
  17. leetcode 2203 单源最短路中转
  18. 面试官这样,面试就有戏了!
  19. 【航天物流组参赛ReadMe.md】
  20. Android 小知识记录-----息屏后亮屏并显示Activity在锁屏页面之上

热门文章

  1. benchmark测试
  2. 设计师的AI自学之路:用图像识别玩忍术
  3. 论随机数AC大法(1)
  4. 物联网平台的开发目标以及技术架构
  5. 实战HttpClient 接口调用以及获取token 设置请求头
  6. excel 单元格插入图片
  7. 高性能国产化信号处理平台国产DSP+FPGA+AI NPU安路紫光方案
  8. 龙芯 python_html页面转PDF、图片操作记录,Vue项目入门实例
  9. 15种顶级分析思维模型。
  10. FFmpeg滤镜:制作图片视频流(续)