zoukankan      html  css  js  c++  java
  • 怎样让Tomcat启动一定成功(局限)

      众所周知,Tomcat在启动的时候如果端口被占用,那么启动就一定不成功的。以下内容具有局限性,仅在端口是Tomcat本身占用端口的情况下有效。如何更加使这种做法更具有广泛性,正在思考中。

      第一种方法:强制结束进程。由于Tomcat启动的进程是“java.exe”,因此在winxp/win2003下,我们可以通过ntsd命令强制结束该进程。

    ntsd -c q -pn java.exe

      通过在Tomcat/bin的startup.bat的开始添加此段代码,强制结束java.exe进程。但是这样的做法具有很大的局限性和风险性。第一,强制结束进程可能带来的后果是导致系统的不稳定,而作为一个服务端,稳定性是非常重要的;第二,如果该服务器上具有其他的程序调用了“java.exe”,那么其他程序也同时就跑不了了。这种做法是极其不值得推荐的。

      第二种方法:调用Tomcat自带的“shutdown.bat”来结束Tomcat进程。

    tasklist|find /"java.exe" || goto okStart
    CALL %CATALINA_HOME%\bin\shutdown.bat
    :okStart
    set EXECUTABLE=%CATALINA_HOME%\bin\catalina.bat

      我的做法是在Tomcat设置EXECUTABLE之前先判断当前进程中是否存在“java.exe”。tasklist命令查询出当前进程列表,find命令找出进程列表中是否存在“java.exe”。如果存在,则调用shutdown.bat,否则的话,就跟原来的startup.bat的执行没什么两样。这样做虽然要比上面的第一种方法要来的好,但是还是有改良的余地。

      而Tomcat结束掉进程是需要时间的,一般来说几秒就够了,因此要给一个几秒的延迟。我这里采用的是用ping命令来实现延迟。

    ping -n 5 127.0.0.0.1>nul

    这样就有4秒的时间来等待Tomcat关闭。

  • 相关阅读:
    紫书 例题8-18 UVa 1442 (扫描法)
    紫书 例题8-17 UVa 1609 (构造法)(详细注释)
    紫书 例题8-16 UVa 1608 (递归)
    紫书 例题8-15 UVa 12174 (滑动窗口)
    紫书 例题8-14 UVa 1607 (二分)
    紫书 例题8-13 UVa 11093 (反证法)
    紫书 例题8-12 UVa 12627 (找规律 + 递归)
    Codeforces Round #441 (Div. 2, by Moscow Team Olympiad)
    CodeForces
    CodeForces 444C 线段树
  • 原文地址:https://www.cnblogs.com/docmao/p/1626431.html
Copyright © 2011-2022 走看看