4

我们正在使用 tomcat 6 为我们的应用程序提供基于 activeMQ 的 Java 后端。最近,我一直在研究如何为该产品的服务器端组件实施持续部署解决方案。

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

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

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


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

4

3 回答 3

5

如果您不将它作为服务运行并且 Tomcat 是唯一运行的 Java 应用程序,那么您可以使用 taskkill。类似的东西taskkill /F /IM java.exe应该可以解决问题。

请注意,就 Tomcat 而言,强制终止 Tomcat 进程是安全的。运行的任何应用程序可能都不会那么宽容,但由于它是您的应用程序,您会知道什么是安全的,什么不是。

于 2012-05-15T07:38:01.027 回答
1

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

然后是 taskkill /f /pid {pid} 而不是仅仅寻找 java 任务。

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

于 2014-05-14T20:43:07.113 回答
0

以下批处理命令适用于在我们的 Windows 服务器上在端口 8080 上运行的 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
于 2016-10-13T19:48:51.870 回答