You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JConsole连接Docker中Kafka Sandbox频繁断开问题求助

问题:JConsole连接Docker中Kafka Connect的JMX时出现连接丢失与SecurityException

连接localhost:35000时,先弹出错误:

"Secure Connection Failed: Retry Insecurely?"(安全连接失败:是否重试非安全连接?)

点击Insecure connection(非安全连接)后,连接瞬间断开,提示:

"Connection Lost: Reconnect?"(连接丢失:是否重新连接?)

调试日志抛出核心异常:

java.lang.SecurityException: Expecting a sun.rmi.server.UnicastRef2 remote reference in stub!

当前使用的JConsole参数

jconsole -debug -J"-Dcom.sun.management.jmxremote=true, -Dcom.sun.management.jmxremote.authenticate=false, -Dcom.sun.management.jmxremote.ssl=false, -Djava.rmi.server.hostname=localhost,  -Dcom.sun.management.jmxremote.local.only=false, -Dcom.sun.management.jmxremote.rmi.port=35000, -Dcom.sun.management.jmxremote.port=35000, -Dcom.sun.management.jmxremote.port=35000"

Java环境信息

java 14.0.1 2020-04-14
Java(TM) SE Runtime Environment (build 14.0.1+7)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.1+7, mixed mode, sharing)

Docker容器状态

CONTAINER ID   IMAGE                                      COMMAND                  CREATED      STATUS                  PORTS                                          NAMES
b21d9589e737   mongodb-kafka-base-setup-mongod:1.0        "bash -c 'sleep 10 &…"   4 days ago   Exited (0) 4 days ago                                                  mongo1-setup
c0a23e041e23   mongodb-kafka-base-mongod:1.0              "docker-entrypoint.s…"   4 days ago   Up 4 days               0.0.0.0:35001->27017/tcp                       mongo1
7c56b4ccc89a   confluentinc/cp-kafka-rest:7.2.2           "/etc/confluent/dock…"   4 days ago   Up 4 days               8082/tcp                                       rest-proxy
3b6fd1821270   confluentinc/cp-schema-registry:7.2.2      "/etc/confluent/dock…"   4 days ago   Exited (1) 4 days ago                                                  schema-registry
c303de030d9f   confluentinc/cp-kafka-connect-base:7.2.2   "/etc/confluent/dock…"   4 days ago   Up 4 days (healthy)     8083/tcp, 9092/tcp, 0.0.0.0:35000->35000/tcp   connect
4c1665f78d4c   confluentinc/cp-kafka:7.2.2                "/etc/confluent/dock…"   4 days ago   Up 4 days               9092/tcp                                       broker
b707c2d6b8be   confluentinc/cp-zookeeper:7.2.2            "/etc/confluent/dock…"   4 days ago   Up 4 days               2181/tcp, 2888/tcp, 3888/tcp                   zookeeper

Netstat端口监听情况

TCP    0.0.0.0:35000          0.0.0.0:0              LISTENING
  TCP    [::]:35000             [::]:0                 LISTENING
  TCP    [::1]:35000            [::]:0                 LISTENING

解决方案

这个sun.rmi.server.UnicastRef2异常本质是Java版本不兼容:你本地用Java 14,而Confluent Platform 7.2.2默认搭载Java 11,Java 12+对RMI stub格式做了变更,导致跨版本JMX连接失败。

具体修复步骤:

  1. 匹配Java版本
    安装与容器一致的Java 11,用对应版本的jconsole发起连接,这是最稳妥的方案。

  2. 修正JConsole参数格式
    你当前的-J参数用逗号分隔是错误的,JVM参数需要用空格单独拆分,正确写法:

    jconsole -debug -J-Dcom.sun.management.jmxremote=true -J-Dcom.sun.management.jmxremote.authenticate=false -J-Dcom.sun.management.jmxremote.ssl=false -J-Djava.rmi.server.hostname=localhost -J-Dcom.sun.management.jmxremote.local.only=false -J-Dcom.sun.management.jmxremote.rmi.port=35000 -J-Dcom.sun.management.jmxremote.port=35000
    
  3. 调整容器JMX配置
    在Kafka Connect的容器启动参数中添加-Dsun.rmi.server.disableHttp=true,强制使用旧版RMI stub格式,兼容高版本Java客户端。同时注意容器内的java.rmi.server.hostname不要设为localhost,改为容器IP或宿主机可访问的地址。

  4. 临时绕过版本限制
    不想换Java版本的话,给jconsole添加强制使用旧stub的参数:

    jconsole -debug -J-Djdk.rmi.stub.server.useOldStub=true -J-Dcom.sun.management.jmxremote=true -J-Dcom.sun.management.jmxremote.authenticate=false -J-Dcom.sun.management.jmxremote.ssl=false -J-Djava.rmi.server.hostname=localhost -J-Dcom.sun.management.jmxremote.local.only=false -J-Dcom.sun.management.jmxremote.rmi.port=35000 -J-Dcom.sun.management.jmxremote.port=35000
    

内容的提问来源于stack exchange,提问作者user2966445

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 05:01:19