gpt4 book ai didi

java - 如果 Tomcat 作为 Windows 服务运行,为什么没有本地 MBeanServer?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:13:28 24 4
gpt4 key购买 nike

如果 Tomcat 作为 Windows 服务运行(使用 Windows Tomcat 安装程序创建),您不能简单地使用 -Dcom.sun.management.jmxremote 启用 JMX .您还需要设置 -Dcom.sun.management.jmxremote.port=<port> .除其他地方外,这在此处进行了解释:Unable to use JConsole with Tomcat running as windows service

但是,我在任何地方都找不到解释为什么会这样。

最佳答案

写题的时候有点迷茫和迷茫。这是我在此期间学到的东西。通常 Tomcat Windows 服务在本地系统帐户下运行。这是所有大惊小怪的主要原因。

如果你简单地设置-Dcom.sun.management.jmxremote在服务配置的 JVM 设置中,JMX 确实启用。如果你有一个在同一个 JVM 实例中运行的 JMX 客户端(例如,因为它被嵌入到应用程序本身中),你可以获取 MBeanServer。像这样:MBeanServerFactory.findMBeanServer(<specific-agent-ID-or-null>) .但是,JConsole 不会列出此 Tomcat 进程。这一切都在这里解释:https://blogs.oracle.com/nbprofiler/entry/monitoring_java_processes_running_as .

如其他地方所述,如果这还不够好,您还需要设置 -Dcom.sun.management.jmxremote.port=<port> .然后您可以使用 localhost:<port> 通过 JConsole 连接到 JMX .这可以通过 Java 代码实现:

JMXServiceURL target = new JMXServiceURL("service:jmx:rmi:///jndi/rmi://localhost:<port>/jmxrmi");
JMXConnector connector = JMXConnectorFactory.connect(target);
connector.getMBeanServerConnection();

关于java - 如果 Tomcat 作为 Windows 服务运行,为什么没有本地 MBeanServer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10431028/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com