nó kết luận rằng câu trích dẫn kết thúc của bạn đến quá sớm. Nó phải ở sau tham số cuối cùng.
Thủ thuật này đã làm việc cho tôi.
Tôi nhận thấy một điều thú vị: khi tôi khởi động ứng dụng của mình bằng dòng lệnh sau:
java -Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Nếu tôi cố gắng kết nối với cổng này từ một máy từ xa bằng jconsole, thì kết nối TCP thành công, một số dữ liệu được trao đổi giữa jconsole từ xa và tác nhân jmx cục bộ nơi MBean của tôi được triển khai và sau đó, jconsole hiển thị thông báo lỗi kết nối. Tôi đã thực hiện chụp wirehark và nó cho thấy sự trao đổi dữ liệu đến từ cả agent và jconsole.
Do đó, đây không phải là sự cố mạng, nếu tôi thực hiện một netstat -an có hoặc không có thuộc tính hệ thống java.rmi.server.hostname, tôi có các ràng buộc sau:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING
TCP [::]:9999 [::]:0 LISTENING
Có nghĩa là trong cả hai trường hợp, socket được tạo trên cổng 9999 chấp nhận kết nối từ bất kỳ máy chủ lưu trữ nào trên bất kỳ địa chỉ nào.
Tôi nghĩ rằng nội dung của thuộc tính hệ thống này được sử dụng ở đâu đó khi kết nối và được so sánh với địa chỉ IP thực được tác nhân sử dụng để giao tiếp với jconsole. Và nếu những địa chỉ đó không khớp, kết nối không thành công.
Tôi không gặp sự cố này khi kết nối từ cùng một máy chủ bằng jconsole, chỉ từ các máy chủ thực từ xa. Vì vậy, tôi cho rằng việc kiểm tra này chỉ được thực hiện khi kết nối đến từ "bên ngoài".