2010-11-07 36 views

回答

0

您可以在java中执行TASKLIST.EXE并将结果添加到结果中。我发现第二个选项是从java运行服务停止命令。

希望它有帮助。

1

没有直接的方式来访问我知道的PID,但是,有人写了一篇关于如何间接完成这个工作的博客。这是他的5个不同选项的链接。

http://blog.igorminar.com/2007/03/how-java-application-can-discover-its.html

的最好的选择就是这样的产品......

使用Java的管理和监控 API(java.lang.management):

ManagementFactory.getRuntimeMXBean().getName(); 

返回类似于: 28906 @ localhost其中28906是t他是JVM进程的PID ,实际上是我的应用程序的 PID。

这种攻击是依赖于JVM的,我只在Sun的JVM上对其进行了测试。

从Javadoc文档的getName() RuntimeMXBean的方法:返回表示正在运行的Java虚拟机 名 。返回的名称字符串 可以是任意任意字符串,并且Java 虚拟机实现可以 选择在返回的 名称字符串中嵌入平台特定的 有用信息。每台正在运行的虚拟机器可以有不同的名称。

2

我不确定这是否有助于Windows的情况,但可以在Linux/UNIX上使用的catalina.sh脚本将进程的PID存储在文件中。您只需将CATALINA_PID环境变量设置为您的PID文件的路径名即可。当你这样做时,运行catalina.sh stop -force将尝试彻底关闭,如果失败,则将为kill Tomcat进程。