后台有很多线程在运行,我要监控这些线程是否成功启动,运行。如果没有启动或是启动失败,我就要重启tomcat这些都基于web网页实现。。,java控制tomcat,除了public static Process run(File dir)throws IOException {
String cmd = "cmd /C start startup.bat";
String[] envp = null;
Runtime rt = Runtime.getRuntime();
return rt.exec(cmd, envp, dir);
}这种方式,还有没有其他的!还有就是我关闭了tomcat,怎么又跳转到jsp页面了。。百度谷歌很多了,还是没找到头绪啊。。

解决方案 »

  1.   

    tomcat都关闭了哪能显示jsp.
    你可以HttpURLConnection请求tomcat的默认首页,如果获得了默认页面说明服务器还在运行,如果页面获取错误你再写程序来启动tomcat.
      

  2.   

    页面获取错误了,怎么来启动tomcat了?我要请求到后台,服务没起,怎么能用程序来启动tomcat。。
      

  3.   

    不就是在上面的程序加点HttpURLConnection代码吗,获取页面错误就搞你下面这个代码,这个程序当然是独立的exe一直在循环监视执行。
    String cmd = "cmd /C start startup.bat";
      

  4.   

    监控的程序 与 应用的程序 应该放在不同的tomcat中运行
      

  5.   

    java可以监控线程是否在运行么?怎么实现啊?求高手指点。
      

  6.   


    Thread[] threads = new Thread[Thread.activeCount()];Thread.enumerate(threads);for(Thread thread : threads){ System.out.println(thread.getName());
    //线程名称
    System.out.println("    "); System.out.println(thread.getState());
    //线程状态
    System.out.println("<br/>");}//已终止的线程不在列表中
      

  7.   


    那我还要监控另一个程序的线程,我用的java VM,这个只能获取当前程序的线程,获取不到另一个程序的线程。我能否把重启tomcat写在一个程序里面了??
      

  8.   


    最好的办法是被监控的线程能够向监视者汇报自己的工作情况,如果被线程的不可控(从你的角度不可以修改代码)
      AND  如果 这些线程是一次启动且周期执行指定任务的话,则可以通过我上面说的那种方式检测当前线路列表中是否存在指定的线程。
      
    如果要重启tomcat,也可以按照你所描述的方式,
    如何跳转可以这样:当重新启动后,你转到一个指定的HTML页面,这在个页面通过AJAX周期重复访问的你服务器的特殊资源(这个资源可以是一个HTML、XML、或者JSON,返回的资源的可以包括任务信息,但不能为空,为了解决缓存的问题,可以在URL后面加一个动态的时间值参数),如果取得资源,证明tomcat启动好了,这时,可以跳转到预设的指定页面;否则你得到一个HTTP错误,然后重新访问此特殊资源,直到成功。
      

  9.   

    在被检测的线程不可重构的情况下,如果被检测的线程是运行一段时间后就自动退出,那么没法在java代码中保证检测到线程是否运行。因为有可能被检测的线程运行时间极短,因为多线程的原因,就有可能出现检测不到的情况。除非被检测的线程汇报自己的状态。
      

  10.   


    在你的$JAVA_HOME\bin下,jdk自带的,双击打开就知道了
      

  11.   

    线程那我用的java VM来得到当前运行的所有线程。现在就是在重启tomcat这了,我停止了tomcat,还能跳转么?服务都关了啊。重启就是说先停止在启动,是吧。问题就是我停止了服务,后面的代码就执行不了了。现在就是要解决这问题,而且我现在控制tomcat,是操作的startup.bat 和shutdown.bat这两个文件。还有其他方法么??
      

  12.   


    你没认真看我15楼的方案么????,HTML+Javascript是可以不信赖后台的
      

  13.   


    支持这个,另外写一个Socket服务封装成jar,开机启动。
      

  14.   


    你15楼说的是‘当重新启动后’,而我现在就是要解决的是程序停止瘫痪了,我要的如何再来重新启动程序。在网上找到一个思路,http://hi.baidu.com/jqsosmmggxghpte/item/3ef8ea0a1e01d8113a53ee0c