怎样让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关闭。

posted @ 2009-12-17 15:12  猫博士  阅读(855)  评论(0编辑  收藏  举报