public void checkTomcat() {
    try {
      String uri = "http://网址";
      URL url = new URL(uri);
      URLConnection huc = (HttpURLConnection) url.openConnection();
      huc.connect();
      log.log(Level.INFO, "Tomcat now Ok!");
    }
    catch (IOException ex) {
      log.log(Level.INFO, ex.toString());
      restartTomcat();
    }
  }
公司的tomcat有时候会假死掉,进程中有tomcat,但是页面无法访问.
我就用了这种笨方法来检测tomcat.
后来遇到了一个问题,当某站点访问量过大的时候,连接池又释放不掉,会造成该站点的页面无法打开(页面一片空白,程序卡在了获得连接上面.也不报错).
但是tomcat下的其他站点可正常访问.
用上面的方法,执行到huc.connect();也就不往下执行了,就一直卡在那.
有没有什麽办法就是在huc.connect();执行一段时间后,比方说10秒,还卡在那就重启tomcat.
如果有比这个更好的办法更好.

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【bluesnaker】截止到2008-06-26 08:38:24的历史汇总数据(不包括此帖):
    发帖数:2                  发帖分:40                 
    结贴数:0                  结贴分:0                  
    未结数:2                  未结分:40                 
    结贴率:0.00  %            结分率:0.00  %            
    如何结贴请参考这里:http://topic.csdn.net/u/20080501/09/ef7ba1b3-6466-49f6-9d92-36fe6d471dd1.html
      

  2.   

    直接用 Socket 连接 Tomcat 服务器,设置 Socket 连接超时时间比如 30 秒(使用 Socket.connect(SocketAddress endpoint, int timeout)),一旦 30 秒后还未连上服务器就会抛出 SocketTimeoutException 异常,捕获之,捕到了说明你服务器当掉了。