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

tomcat宕机自动重启和每日定时启动tomcat在项目后期维护中会遇到这样的情况,tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应,需要人工手动关闭和重启服务,针对这样的突发情况,希望程序能自动处理问题而不需要人工关于,所以才有了目前的需求。一、设置tomcat定时启动1,首先将tomcat注册为服务,先打开tomcat的bin目录下service.bat文件,修改下面的值,这是sevvice的注册名称和显

大家好,又见面了,我是你们的朋友全栈君。

在项目后期维护中会遇到这样的情况,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:

[java] 
view plain  
copy

 
在CODE上查看代码片
派生到我的代码片

  1. import java.io.BufferedReader;  
  2. import java.io.IOException;  
  3. import java.io.InputStream;  
  4. import java.io.InputStreamReader;  
  5. import java.net.MalformedURLException;  
  6. import java.net.URL;  
  7. import java.net.URLConnection;  
  8. import java.util.Properties;  
  9. /** 
  10.  * @describe:TomcatMonitor.java 
  11.  *  
  12.  * @date 2016-7-4 
  13.  * @author liuweilong 
  14.  */  
  15. public class TomcatMonitor implements Runnable{  
  16.       
  17.     String start=“”; //系统命令 启动  
  18.     String stop=“”; //系统命令 关闭  
  19.     String testHttp=“”;  //测试连接地址  
  20.     int testIntervalTime=1;//测试连接间隔时间,单位为秒  
  21.     int waitIntervalTime=2; //等待测试间隔时间,单位为秒  
  22.     int testTotalCount=5; //测试连接总次数  
  23.       
  24.     Thread thread=null;  
  25.       
  26.     public TomcatMonitor(){  
  27.         InputStream in = TomcatMonitor.class.getResourceAsStream(“config.properties”);  
  28.         Properties p = new Properties();  
  29.          try {  
  30.             p.load(in);  
  31.             stop=p.getProperty(“stop”);  
  32.             start=p.getProperty(“start”);  
  33.             testHttp=p.getProperty(“testHttp”);  
  34.             testIntervalTime=Integer.parseInt(p.getProperty(“testIntervalTime”));  
  35.             waitIntervalTime=Integer.parseInt(p.getProperty(“waitIntervalTime”));  
  36.             testTotalCount=Integer.parseInt(p.getProperty(“testTotalCount”));             
  37.         } catch (Exception e) {  
  38.                     e.printStackTrace();  
  39.         }  
  40.               
  41.         System.out.println(“*******************初始化成功!*******************”);  
  42.            
  43.           
  44.         thread=new Thread(this);  
  45.         thread.start();       
  46.     }  
  47.       
  48.     public void run() {  
  49.         System.out.println(“正在监控中…”);     
  50.         int testCount=0;  
  51.         while(true){  
  52.             testCount=0;  
  53.             testCount++;              
  54.             boolean isrun=test();  
  55.             System.out.println(“正在启动测试连接,尝试连接次数为:”+testCount+“,结果为:”+(isrun==false?“失败.”:“成功!”));                 
  56.             while(!isrun){  
  57.                 if(testCount>=testTotalCount)break;  
  58.                 try {  
  59.                     thread.sleep(testIntervalTime*1000);  
  60.                 } catch (InterruptedException e) {  
  61.                     e.printStackTrace();  
  62.                 }  
  63.                 testCount++;  
  64.                 System.out.println(“正在启动测试连接,尝试连接次数为:”+testCount+“,结果为:”+(isrun==false?“失败.”:“成功!”));                 
  65.                 isrun=test();  
  66.             }  
  67.               
  68.             if(!isrun){               
  69.                 try{        
  70.                     //关闭tomcat服务      
  71.                     Process proc = Runtime.getRuntime().exec(stop);  
  72.                     thread.sleep(5000);  
  73.                     //启动tomcat服务  
  74.                     System.out.println(“测试连接失败,正在重启tomcat”);  
  75.                     Process p=Runtime.getRuntime().exec(start);   
  76.                     System.out.println(“重启tomcat成功”);  
  77.                 }catch(Exception e){  
  78.                     e.printStackTrace();  
  79.                     System.out.println(“重启tomcat异常,请查看先关错误信息。。。。。”);  
  80.                       
  81.                 }                 
  82.             }  
  83.               
  84.             try {  
  85.                 thread.sleep(waitIntervalTime*1000);  
  86.             } catch (InterruptedException e) {  
  87.                 e.printStackTrace();  
  88.             }  
  89.               
  90.             isrun=test();  
  91.         }         
  92.     }  
  93.       
  94.     public boolean test(){  
  95.           
  96.         URL url=null;         
  97.         try {  
  98.             url = new URL(testHttp);  
  99.         } catch (MalformedURLException e) {  
  100.             e.printStackTrace();  
  101.         }  
  102.         try {  
  103.             URLConnection urlConn=url.openConnection();  
  104.             urlConn.setReadTimeout(15000);  
  105.             BufferedReader reader = new BufferedReader(new InputStreamReader( urlConn.getInputStream()));            //实例化输入流,并获取网页代码  
  106.                    String s;                                         
  107.                    while ((s = reader.readLine()) != null) {  
  108.                       return true;     
  109.                    }                          
  110.         } catch (Exception e) {  
  111.           return false;  
  112.         }  
  113.         return false;  
  114.     }  
  115.       
  116.       
  117.     public static void main(String[] args) throws Exception{  
  118.         TomcatMonitor tm=new TomcatMonitor();  
  119.     }  
  120.       
  121.   
  122. }  

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

[plain] 
view plain  
copy

 
在CODE上查看代码片
派生到我的代码片

  1. #系统命令 启动  
  2. start=net start Tomcat7  
  3.   
  4. #关闭  
  5. stop = net stop Tomcat7  
  6.   
  7. #测试连接总次数  
  8. testTotalCount=3  
  9.   
  10. #连接失败时,再次检测时间间隔,单位为秒  
  11. testIntervalTime=3  
  12.   
  13. #连接超时时间,即多少秒tomcat没响应视为宕机,单位为秒  
  14. connectionTimeout=15  
  15.   
  16. #tomcat启动时间,防止在tomcat尚未启动完成的时候,程序又去检验tomcat状态,造成尚未启动完成又重新启动,单位为秒  
  17. tomcatStartTime=600  
  18.   
  19. #测试连接地址  
  20. testHttp=http://127.0.0.1:8080  
  21.   
  22. #正常情况下,每次检测间隔时间,单位为秒  
  23. waitIntervalTime=30  

最后是启动的start.bat:

[plain] 
view plain  
copy

 
在CODE上查看代码片
派生到我的代码片

  1. java -cp . TomcatMonitor  
tomcat宕机自动重启和每日定时启动tomcat

如何监控tomcat死掉后自动重启

安装设置分为以下四个步骤:第一:创建监控页面在项目系统里添加一个提供监控系统访问的页面monitor.jsp,只需输出一句代码,代码如下:<%String s=”ok”;out.println(s.length());%>第二:修改tomcat配置若是系统自动安装的服务,可直接跳过这一步。但是需确定服务名称,以便在以后的步骤使用,如下图:

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

若是手动为tomcat设置服务,请按以下步骤进行:

1、进入tomcat目录下的bin目录,用记事本打开service.bat文件,找到set SERVICE_NAME=TOMCATXX这一句,把后面的值改成自己对tomcat设置的服务名,把PR_DISPLAYNAME的值设置为显示的服务名称,这个是在系统管理的服务里面中列表里显示的名字。

如设置信访系统,则设置为这样:

Set SERVICE_NAME=xfgl

Set PR_DISPLAYNAME=tomcat xfgl

保存。

2、在运行里输入“CMD”,进入命令控制台,使用cd命令转到tomcat目录下的bin目录,运行service.bat install命令,把tomcat设置为系统启动服务。

3、进入控制面板->管理工具->服务,在服务列表中找到“tomcat xfgl”一项,双击弹出窗口,把启动类型改为“自动”,确定保存。

设置监控脚本文件

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/163646.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ag-grid 设置单元格以及行的颜色

    ag-grid 设置单元格以及行的颜色在使用ag-grid的时候有通过单元格的值设置不同行颜色,然后百度了网上的方法,汇总了一下,具体效果图如下:话不多说,直接上代码。<!doctypehtml><html><head><metacharset=”utf-8″><metaname=”viewport”content=”width=device-width,initial-scale=1,shrink…

    2022年7月11日
  • 关于二叉树的前序、中序、后序三种遍历

    二叉树遍历分为三种:前序、中序、后序,其中序遍历最为重要。为啥叫这个名字?是根据根节点的顺序命名的。比如上图正常的一个满节点,A:根节点、B:左节点、C:右节点,前序顺序是ABC(根节点排最先,然后同级先左后右);中序顺序是BAC(先左后根最后右);后序顺序是BCA(先左后右最后根)。    比如上图二叉树遍历结果   前序遍历:ABCDEFGHK    中序遍历:BDCAEHGKF    后序…

    2022年4月9日
  • linux设置文件权限777_linux目录详解

    linux设置文件权限777_linux目录详解Linux、Fedora、Ubuntu修改文件、文件夹权限的方法差不多。很多人开始接触Linux时都很头痛Linux的文件权限问题。这里告诉大家如何修改Linux文件-文件夹权限。以主文件夹下的一个名为“cc”的文件夹为例。下面一步一步介绍如何修改权限:1.打开终端。输入”su”(没有引号)2.接下来会要你输入密码,输入你的root密码。3.假设我的文件夹在主目录里,地址为/var/home/d…

    2022年9月11日
  • java integer.parseint_java method.invoke

    java integer.parseint_java method.invoke我正在编写一个使用反射来动态查找和调用方法的库.只给出一个对象,一个方法名和一个参数列表,我需要调用给定的方法,就好像方法调用是在代码中显式编写的一样.我一直在使用以下方法,在大多数情况下都可以使用:staticvoidcallMethod(Objectreceiver,StringmethodName,Object[]params){Class>[]paramTypes…

    2022年9月23日
  • 学习双拼必看:双拼输入法的心得以及快速入门办法

    学习双拼必看:双拼输入法的心得以及快速入门办法1.简单介绍一下双拼2.总共18种双拼方案3.15种双拼方案的具体映射4.顺便提一下双拼口诀的事情5.总结不同平台选择的方案双拼(也称双打)是一种建立在拼音输入法基础上的输入方法,可视为全拼的一种改进,它通过将汉语拼音中每个含多个字母的声母或韵母各自映射到某个按键上,使得每个音都可以用两个按键打出,极大地提高了拼音输入法的输入速度。这种声母或韵母到按键的对应表通常称之为双…

    2022年6月23日
  • fedora 12 QQ 的安装使用过程「建议收藏」

    fedora 12 QQ 的安装使用过程「建议收藏」一 下载地址:http://im.qq.com/qq/linux/download.shtml  由于装的是fedora  12于是下linuxqq-v1.0.2-beta1.i386.rmp直接双击安装就可以了。安装完后,应用程序出现在Internet下的腾讯QQ。二 成功登录后,不小心按了最小化后,郁闷的发现找不到qq图标。其实解决很简单,在面板上右击,选择添加到面板

    2022年9月2日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号