为什么tomcat服务器可以通过jmxrmi端口1099访问

6jygbczu  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(612)

我的理解是,如果我们配置以下属性,tomcat服务器可以通过jmxrmi访问。也可以配置端口。

-Dcom.sun.management.jmxremote.port=30000
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.authenticate=true
-Dcom.sun.management.jmxremote.password.file=xyz
-Dcom.sun.management.jmxremote.access.file=xyz

之后,tomcat服务器可以通过jconsole或jvisualvm等jmx工具进行连接,但我也注意到同一个tomcat服务器也可以连接到默认的jmxrmi端口1099上。我还没有配置端口1099。即使我注解掉了上面所有的属性,我看到tomcat仍然可以连接到jvisualvm上的1099端口。
请建议在默认端口上启用此连接的方法。我怎样才能禁用这个连接?
可能classpath中的其他第三方库也在这么做,但如何判断是哪一个呢?

fquxozlt

fquxozlt1#

jmx使用两个端口:一个用于jmx连接(已设置为端口30000),另一个用于rmi通信。java默认为端口1099,但如果正在使用,它将选择1099之后的第一个可用端口。在Java8中,不能通过系统属性显式设置此端口。
对于以后的java版本,可以使用system属性 com.sun.management.jmxremote.rmi.port .
tomcat有一个解决方法。你可以用 JmxRemoteLifecycleListener 设置 rmiServerPortPlatform 属性。把它调到你喜欢的端口。
请注意,您不能禁用第二个端口:这是jmx正常运行所必需的。

相关问题