請(qǐng)先參考WSL2與Windows間的網(wǎng)絡(luò)互訪獲取正確的WSL2的IP Address: <wsl-ip>
。本文提到的Java應(yīng)用被部署在Ubuntu 20.04.3 LTS系統(tǒng)上亏娜。
在JConsole通過<wsl-ip>
:<JMX端口>
連接WSL2里的Java應(yīng)用時(shí)會(huì)遇到以下錯(cuò)誤而不能成功連接:
連接失敗
其根本原因是Bug ID: JDK-6209663 jconsole won't connect to remote JVM on Linux (java.com)
有兩種解決辦法:
- 如Sun Bug中所描述的方法:
通過修改/etc/hosts
文件使hostname -i
返回<wsl-ip>
年栓。
默認(rèn)情況下hostname -i可能返回127.0.1.1
,編輯/etc/hosts
文件净嘀,將127.0.1.1
替換成<wsl-ip>
就可以了。
如:
127.0.1.1 MyMateBookXPro.localdomain
替換成:
<wsl-ip>
MyMateBookXPro.localdomain
- 啟動(dòng)Java應(yīng)用時(shí)綁定JMX Server的hostname (推薦猜绣,-Djava.rmi.server.hostname參數(shù)非常重要,一定要有)
要解決這個(gè)問題一個(gè)辦法是在啟動(dòng)Java應(yīng)用時(shí)通過-Djava.rmi.server.hostname參數(shù)綁定JMX Server的hostname為<wsl-ip>
,下面是一個(gè)Java應(yīng)用的啟動(dòng)參數(shù)示例:
$ java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=9998 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=172.27.170.146 -jar yourJavaApp.jar
上面命令會(huì)綁定JMX server的hostname為172.27.170.146,端口為9998.
使用方法1或2小槐,在Windows下的JConsole里通過<wsl-ip>
:<JMX端口>
就可以正常連接了。
成功連接