здається, що ваша кінцева цитата надходить занадто рано. Це має бути після останнього параметра.
Цей фокус спрацював у мене.
Я помітив щось цікаве: коли я запускаю свою програму за допомогою наступного командного рядка:
java -Dcom.sun.management.jmxremote.port=9999
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
Якщо я намагаюся підключитися до цього порту з віддаленого комп'ютера за допомогою jconsole, з'єднання TCP вдається, обмінюються деякі дані між віддаленим jconsole та локальним агентом jmx, де розгортається мій MBean, а потім jconsole відображає повідомлення про помилку підключення. Я виконав захоплення wireshark, і на ньому показано обмін даними, що надходить як від агента, так і від jconsole.
Таким чином, це не проблема мережі, якщо я виконую netstat -an із властивістю системи java.rmi.server.hostname або без неї, у мене є такі прив'язки:
TCP 0.0.0.0:9999 0.0.0.0:0 LISTENING
TCP [::]:9999 [::]:0 LISTENING
Це означає, що в обох випадках сокет, створений на порту 9999, приймає з'єднання з будь-якого хоста за будь-якою адресою.
Я думаю, що вміст цієї системної властивості використовується десь при підключенні та порівнюється з фактичною IP-адресою, що використовується агентом для зв'язку з jconsole. І якщо ці адреси не збігаються, з’єднання не вдається.
У мене не було цієї проблеми під час підключення з одного хосту за допомогою jconsole, лише від реальних фізичних віддалених хостів. Отже, я припускаю, що ця перевірка проводиться лише тоді, коли підключення надходить ззовні.