【发布时间】:2011-06-07 20:09:03
【问题描述】:
我们有一个作为 Windows 服务运行的 Java 进程(使用 srvany)。它使用 Java 1.6(目前为 1.6.0.23)运行。
在过去 (Windows XP),我可以将 JConsole 连接到进程,在 Windows 7 上我不能再这样做了。
如果我运行 jconsole <pid> 我会得到“无效的进程 id:4488”。服务以 SYSTEM 用户身份运行。
如果我让服务以我的桌面用户身份运行(使用“以此帐户登录”),服务进程 ID 会出现在 JConsole 中,但它们是灰色的,我无法连接。
当 Java 进程作为 Windows 7 服务运行时,是否无法动态连接到它们?
【问题讨论】:
-
您的 JAVA 服务是否可配置为 JMX?
-
我没有指定任何额外的东西来启用 JMX,默认情况下(使用 1.6 并在命令行运行时确认)它可以工作并且可以在 Windows XP 上工作。
-
好的,如果启用了 JMX,则使用 JMX URL 和端口连接服务。它应该连接。
-
这就是问题所在。我通常只通过 PID 而不是端口号进行连接。
-
文档说“注意 - 在 Windows 平台上,出于安全原因,仅当您的默认临时目录位于允许设置文件和目录权限的文件系统上时,才支持本地监视和管理 (例如,在新技术文件系统 (NTFS) 文件系统上)。文件分配表 (FAT) 文件系统不支持它,因为它提供的访问控制不足。”所以也许这就是在命令行上运行的进程(或作为 Windows XP 服务)和 Windows 7 服务之间的区别。
标签: java service windows-7 jmx