转载请注明出处:http://blog.csdn.net/l1028386804/article/details/60587663

在项目后期维护中会遇到这样的情况,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 2017-03-06* @author liuyazhuang*/
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【工具包系列】

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

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

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

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

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

  5. php监测tomcat,java_JAVA实现监测tomcat是否宕机及控制重启的方法,本文实例讲述了JAVA实现监测tom - phpStudy...

    JAVA实现监测tomcat是否宕机及控制重启的方法 本文实例讲述了JAVA实现监测tomcat是否宕机及控制重启的方法.分享给大家供大家参考.具体如下: Detector.java: import ...

  6. java 宕机监控_JAVA实现监测tomcat是否宕机及控制重启的方法

    本文实例讲述了JAVA实现监测tomcat是否宕机及控制重启的方法.分享给大家供大家参考.具体如下: Detector.java: import java.net.URL; import java.n ...

  7. 手写tomcat监控工具---宕机重启

    2019独角兽企业重金招聘Python工程师标准>>> 使用前提: 1.打成jar包,并在控制台运行:java -jar TomcatMonitorUtil.jar 2.需要配置to ...

  8. 解决生产环境一次tomcat无故宕机的诡异问题

    文章目录 前言 一.问题描述 二.排查步骤 1.先排查一下是不是代码的不规范导致JVM内存溢出 1.先用jstat -gc 命令查看下内存使用情况 2.使用jmap 查看下内存配置 通过以上发现内存使 ...

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

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

最新文章

  1. ImageMagick简单记录
  2. 10进制与16进制之间的转换 delphi
  3. Android中三种常用解析XML的方式(DOM、SAX、PULL)简介及区别
  4. java.policy无法修改_如何配置Policy文件进行Java安全策略的设置
  5. a jni error has occurred_A-08 幂函数、有理函数、代数函数
  6. Android 数据库框架 DBFlow 的使用
  7. 双赢思维的五个要领_可访问网站双赢的4个原因
  8. mysql在linux下备份还原,Linux下MySQL的备份与还原
  9. 基于LAMP的cacti安装和配置问题处理(一)
  10. go导出mysql中的excel表,MySQL导出数据,并转存到Excel表格中
  11. SpringMVC中解决POST和GET请求中文乱码问题
  12. PHP培训领航者兄弟连IT教育推出兄弟会教育模式
  13. 51单片机的红外遥控
  14. mdf文件和ldf文件是什么?
  15. iOS加速器简单介绍
  16. Cognos资料整理
  17. python基础之输入输出语法
  18. Android App开发语音处理之系统自带的语音引擎、文字转语音、语音识别的讲解及实战(超详细 附源码)
  19. 恭喜元宇宙产业委秘书长何超、执行秘书长武艳芳成为南京河西CBD发展大使
  20. 力扣 387. 字符串中的第一个唯一字符 C语言实现

热门文章

  1. Dictionary(字典)
  2. 蓝桥杯的c语言编译器,第九届蓝桥杯大赛个人赛省赛(软件类)C/C++ 大学B组比赛心得(还在更新)...
  3. winfows 切换 双屏_Win10系统如何设置双屏显示?windows10设置双屏显示的方法
  4. 【C++】相对路径与绝对路径以及斜杠与反斜杠的区别
  5. 线上运行的项目突然变得很卡如何排查?
  6. 单页面应用——SPA
  7. 已知两边和夹角求第三边长_已知任意三角形的两边和夹角,怎样用三角函数求出第三边的长度...
  8. glob.glob()函数
  9. POI在指定excel插入行java
  10. 资深技术专家推荐:如何写复杂业务代码-阿里实践