2012-05-14 75 views
4

我们使用tomcat 6为我们的应用程序提供基于activeMQ的Java后端。最近,我一直在研究如何为本产品的服务器端组件实施Continuous Deployment解决方案。强制Tomcat 6在Windows上停止

我想要做的是有我们连续Ingegration服务器:
1.扔MSI安装到虚拟机
2. 停止Tomcat
3.运行安装程序
4.启动Tomcat
5.测试服务器正在运行

我可以执行除关闭Tomcat步骤以外的所有操作。我面临的问题是,Tomcat在关闭时并不总是优雅。所以我需要能够强制关闭服务器。对于天气预报或者不运行Tomcat作为服务,我是开放的。
有没有人有关于如何关闭Windows上的Tomcat 6的任何信息?我已经看到了一些关于使用-force参数的文档,但是这个参数已经不完整并且针对Unix系统。

任何您可以提供的信息将不胜感激。


编辑:Tomcat可能不是机器上运行的唯一Java进程。

回答

4

如果您不将其作为服务运行,并且Tomcat是唯一运行的Java应用程序,那么您可以使用taskkill。像taskkill /F /IM java.exe应该做的伎俩。

注意强制查杀Tomcat进程是安全的,就Tomcat而言。任何运行的应用程序可能都不会如此宽容,但由于它是您的应用程序,您将知道什么是安全的,哪些不是。

+3

感谢可惜我不能保证Tomcat服务器将在计算机上运行的唯一的Java进程。 – Klee

+0

'taskkill/F/IM java.exe'需要管理权限.... FYI – ha9u63ar

1

另一个答案(with taskkill)很好,但是要通过“sc queryex”的输出来搜索您感兴趣的服务的名称,然后抓住它的PID。

然后它是taskkill/f/pid {pid},而不是只查找java任务。

我不得不使用groovy脚本来做到这一点,如果你擅长PowerShell,你可能会得到更好的结果。

0

以下批处理命令适用于在端口8080我们的Windows服务器上运行Tomcat ..

@echo off 

FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO @ECHO Unable to stop Tomcat timely..Kill process %%P 
FOR /F "tokens=5 delims= " %%P IN ('netstat -a -n -o ^| findstr :8080') DO call TaskKill.exe /f /PID %%P