Java 如何找到默认的JMX端口号?

Java 如何找到默认的JMX端口号?,java,profiling,jmx,jvisualvm,Java,Profiling,Jmx,Jvisualvm,我正在远程Windows XP上的Java 6 VM上运行Java应用程序,在该应用程序上我可以运行jvisualvm.exe自动连接到正在运行的应用程序 现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号。我在哪里能找到它?或者,我必须使用一些VM参数重新启动该应用程序以指定端口号吗 阅读完问题后,我在远程计算机上执行了命令 netstat -apn 但是什么都没有 现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号。我在哪里能找到它?或者,我必须

我正在远程Windows XP上的Java 6 VM上运行Java应用程序,在该应用程序上我可以运行jvisualvm.exe自动连接到正在运行的应用程序

现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号。我在哪里能找到它?或者,我必须使用一些VM参数重新启动该应用程序以指定端口号吗

阅读完问题后,我在远程计算机上执行了命令

netstat -apn
但是什么都没有

现在我需要从本地计算机连接该应用程序,但我不知道远程计算机的JMX端口号。我在哪里能找到它?或者,我必须使用一些VM参数重新启动该应用程序以指定端口号吗

默认情况下,JMX不会在端口上发布,除非您在此页面中指定参数:

如果正在运行,您应该能够访问这些系统属性中的任何一个,以查看它们是否已设置:

if (System.getProperty("com.sun.management.jmxremote") == null) {
    System.out.println("JMX remote is disabled");
} else [
    String portString = System.getProperty("com.sun.management.jmxremote.port");
    if (portString != null) {
        System.out.println("JMX running on port "
            + Integer.parseInt(portString));
    }
}
根据服务器的连接方式,您可能还必须指定以下参数。作为初始JMX连接的一部分,jconsole连接到RMI端口,以确定JMX服务器运行在哪个端口上。当您最初启动启用JMX的应用程序时,它会查看自己的主机名,以确定在初始RMI事务中返回的地址。如果主机名不在
/etc/hosts
中,或者设置为不正确的接口地址,则可以使用以下内容覆盖它:

-Djava.rmi.server.hostname=<IP address>
-Djava.rmi.server.hostname=

另一方面,my允许您定义和或将它们都设置为同一端口。上面用
com.sun.management.jmxremote.port
定义的端口实际上是RMI端口。这会告诉客户端JMX服务器正在哪个端口上运行。

您丢失的可能重复的
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=
至少在Java 7之前,这两个都不是必需的@Claudio。以我的经验,这不是必需的。我正在Linux CentOS 6上运行Java 7。我找到了你的答案,但没有用。幸运的是,您还提供了原始答案的链接,并添加了这些标志,它开始工作。不知道实际需要哪一个以及原因。如果您使用的是Wildfly,请咨询;
-Djava.rmi.server.hostname=<IP address>