我正在运行tomcat服务器并尝试更新该服务器上的代码。为此,我需要在Windows环境中可靠地关闭服务器。据我所知,tomcat shutdown.bat脚本可能会出现失控线程的问题,即使我不小心创建了一个会阻止.bat脚本工作的线程,我也需要这个。我一直尝试的方法是运行带有服务名称的NET STOP命令 - 但是在某些情况下我在一台机器上运行多个tomcats(这意味着多个服务)。有没有办法获取与运行我的代码的tomcat相关的服务名称?我应该研究一下我的问题是否有其他好的解决方案?
我有很多客户,因此更喜欢不涉及安装其他软件或硬编码服务名称的解决方案。
答案 0 :(得分:1)
如果您在运行tomcat的Vm中找到服务名称之后,您可能需要查看ManagementBean的内容,以下关于sun的帖子会详细介绍;
无论你做什么都会非常hacky,因为它依赖于操作系统!我肯定会建议坚持使用Tomcat控件&部署服务,你甚至不需要杀死Tomcat进程,你应该能够使用tomcat热部署工具来重新部署你的webapp - 从控制面板或者tomcat提供的ant库。
答案 1 :(得分:0)
使用cygwin和netstat查找侦听该端口的进程,然后通过PID将其杀死是我的方法。
答案 2 :(得分:0)
Tomcat热部署。有什么特别的原因你不能放入新的WAR文件吗?
答案 3 :(得分:0)
刚刚发现服务在Windows注册表中列出了“HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \”等密钥和服务名称。 Image Path包含可执行文件的完整路径名。如果我浏览注册表,我可以将tomcat主页匹配到可执行文件的路径,并从密钥中获取服务名称。然后我就可以对此进行净停止了。