【发布时间】:2010-11-14 22:29:19
【问题描述】:
我经常向 Linux 和 Mac 上的开发人员展示 jhat、jps 和 jstack 工具集。但是,最近一位开发人员表示,如果所讨论的 Java 应用程序以 Windows Service 运行,则这些在 Windows 中是不可用的。
Sun-filed bug says something very similar,但由于不活动而关闭。
我已经亲自测试过了,确实它看起来是真的,尽管我简直不敢相信。这是设置:
- Tomcat 或类似的以“登录身份”==“本地系统”作为 Windows 服务运行
- 具有管理员权限的用户登录到同一台 Windows 计算机。
- 管理员打开 Windows 任务管理器,可以看到 java.exe 正在运行
- 管理员打开控制台,输入“jps”,获取不包括 Tomcat 的 java 服务进程的进程列表。
- 作为蛮力尝试,从 Windows 任务管理器获取 tomcat 的 PID 作为服务。键入 jstack
。得到回复: 没有这个进程
这在 Windows XP、Windows 2003 Server 和 Windows 7 下似乎可以重现。Java 版本 1.5 和 1.6 产生相同的结果。
是否有办法从终端(即使以管理员身份登录)“sudo up”以获取 JPS 和其他工具以查看 java 服务?
【问题讨论】:
-
您是否尝试过(或者是否可以选择)使用远程管理选项而不是 PID 进行连接?
-
我们可能不得不求助于——在服务执行程序中设置一个 jstatd 以通过套接字公开 java 进程——但目标只是通过 PID 来完成。我只是想确认我在这里没有遗漏任何东西。这对于 Windows 来说似乎是一个巨大的障碍,但在 Mac/BSD/Linux 上却不是问题。
-
Devon_C_Miller 的回答是否为您解决了这个问题?我以 SYSTEM 身份运行 jconsole,但这并没有消除问题(请参阅我对 Devon_C_Miller 的回答的评论)
标签: java windows windows-services