网站推广策划书模板,医学院英文网站建设方案,滨州内做网站的公司,建站用wordpress转载请注明出处#xff1a;http://blog.csdn.net/l1028386804/article/details/60587663 在项目后期维护中会遇到这样的情况#xff0c;tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应#xff0c;需要人工手动关闭和重启服务#xff0c;针对这样的突发情况http://blog.csdn.net/l1028386804/article/details/60587663 在项目后期维护中会遇到这样的情况tomcat在内存溢出的时候就出现死机的情况和遇到长时间不响应需要人工手动关闭和重启服务针对这样的突发情况希望程序能自动处理问题而不需要人工关于所以才有了目前的需求。 一、设置tomcat定时启动 1首先将tomcat注册为服务先打开tomcat的bin目录下service.bat文件修改下面的值这是sevvice的注册名称和显示名称一般可使用默认值。 set SERVICE_NAMETomcat7 set PR_DISPLAYNAMEApache 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 testIntervalTime1;//测试连接间隔时间单位为秒int waitIntervalTime2; //等待测试间隔时间单位为秒int testTotalCount5; //测试连接总次数Thread threadnull;public TomcatMonitor(){InputStream in TomcatMonitor.class.getResourceAsStream(config.properties);Properties p new Properties();try {p.load(in);stopp.getProperty(stop);startp.getProperty(start);testHttpp.getProperty(testHttp);testIntervalTimeInteger.parseInt(p.getProperty(testIntervalTime));waitIntervalTimeInteger.parseInt(p.getProperty(waitIntervalTime));testTotalCountInteger.parseInt(p.getProperty(testTotalCount)); } catch (Exception e) {e.printStackTrace();}System.out.println(*******************初始化成功!*******************);threadnew Thread(this);thread.start(); }public void run() {System.out.println(正在监控中...); int testCount0;while(true){testCount0;testCount; boolean isruntest();System.out.println(正在启动测试连接,尝试连接次数为:testCount,结果为:(isrunfalse?失败.:成功!)); while(!isrun){if(testCounttestTotalCount)break;try {Thread.sleep(testIntervalTime*1000);} catch (InterruptedException e) {e.printStackTrace();}testCount;System.out.println(正在启动测试连接,尝试连接次数为:testCount,结果为:(isrunfalse?失败.:成功!)); isruntest();}if(!isrun){ try{ //关闭tomcat服务 Process proc Runtime.getRuntime().exec(stop);Thread.sleep(5000);//启动tomcat服务System.out.println(测试连接失败,正在重启tomcat);Process pRuntime.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();}isruntest();} }public boolean test(){URL urlnull; try {url new URL(testHttp);} catch (MalformedURLException e) {e.printStackTrace();}try {URLConnection urlConnurl.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 tmnew TomcatMonitor();}}
然后是对应的配置文件config.properties #系统命令 启动
startnet start Tomcat7#关闭
stop net stop Tomcat7#测试连接总次数
testTotalCount3#连接失败时再次检测时间间隔单位为秒
testIntervalTime3#连接超时时间即多少秒tomcat没响应视为宕机单位为秒
connectionTimeout15#tomcat启动时间防止在tomcat尚未启动完成的时候程序又去检验tomcat状态造成尚未启动完成又重新启动单位为秒
tomcatStartTime600#测试连接地址
testHttphttp://127.0.0.1:8080#正常情况下每次检测间隔时间单位为秒
waitIntervalTime30最后是启动的start.bat java -cp . TomcatMonitor