如果您想在其RMI註冊表的特定端口上啓動jstatd
,則可以爲此傳遞-p
參數。如何強制或預測jstatd的第二個開放端口?
但問題是它打開第二個隨機端口(在java中稱爲「匿名端口」),這會導致編寫防火牆規則時出現問題,或者使用JVisualVM連接到在Docker容器中運行的遠程jstatd
。
如果你看看jstatd
source,你會看到它打電話給UnicastRemoteObject.exportObject(remoteHost, 0)
,這將打開一個新的「匿名端口」,這似乎是隨機的。
有沒有辦法強制這個最後一個端口是固定的,還是一種方法來預測哪一個會被選中?
可能的重複[如何確保RMI只使用特定的一組端口?](http://stackoverflow.com/questions/56687/how-do-i-ensure-that-rmi-uses-only -a-specific-set-of-ports) – jchampemont
事實上,它會導致新導出的對象重用以前使用的端口,例如註冊表端口,除非存在套接字工廠衝突。你有證據嗎?還是僅僅基於這個誤讀這個問題? – EJP
@EJP:我真的不理解你的評論......我的問題是基於這樣一個事實:當啓動'jstatd'時打開另一個端口(以及RMI註冊表端口),如果你不轉發這個端口在防火牆規則,然後JVisualVM(例如)將無法訪問此遠程服務器... –