Tomcat 持续监听 tcp 1099 端口

问题描述 投票:0回答:1

我在tomcat 8.5.63版本和Java 1.8版本上部署了应用程序。每当我部署应用程序时,tomcat 默认都会为 JMX rmi 打开 tcp 端口 1099。我可以使用 jvisualvm 工具连接到远程客户端,而无需进行任何身份验证。我不希望默认情况下打开该端口。我尝试根据 SO 中的其他解决方案更改各种 jvm 参数,但没有成功。 下面给出的是我最近尝试过的配置。

CATALINA_OPTS="-Xms512m -Xmx1024m -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=16105 -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=true -Dcom.sun.management.jmxremote.login.config=Tomcat -Djava.security.auth.login.config=$CATALINA_HOME/login.config -Dcom.sun.management.jmxremote.access.file=$CATALINA_BASE/conf/jmxremote.access -Dcom.sun.management.jmxremote.rmi.port=16106 

我特别提到了 -Dcom.sun.management.jmxremote.rmi.port=16106 用于 JMX rmi,但无法理解为什么它仍然监听端口 1099。请指教。

注意:我确实看到一些答案提到传递 XX:+DisableAttachMechanism 作为 jvm 参数来阻止 jxm。但是如果我们想要同时启用 jxm 并且不应该使用默认端口(1099)怎么办?

java tomcat tomcat8 rmi jmx
1个回答
0
投票

检查您在 Tomcat 服务器上运行的项目是否使用了

activemq-broker
从版本 5.12.x5.15.x 的库?

如果您的项目是 Spring Boot 并使用下面的依赖项,则有可能

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-activemq</artifactId>
</dependency>

然后有一个VM选项

org.apache.activemq.broker.jmx.createConnector
默认设置为
true

它将导致 JMX 连接器被创建并在默认端口上运行

1099

要通过另外使用 VM 选项或系统属性启动应用程序来禁用它。例如:

java -Dorg.apache.activemq.broker.jmx.createConnector=false \
    -jar jmx/target/jmx-1.0-SNAPSHOT.jar

旁注:5.16.x 中的

activemq-broker
版本默认将此选项设置为
false

© www.soinside.com 2019 - 2024. All rights reserved.