2015-03-24 4 views
0

У меня есть проблемы с доступом к виртуальной машине Java на сервере Ubuntu (14.04.1 LTS) из Java управления полетами работают на OSX 10.10.2монитор удаленной JVM с Java Mission Profiler

Я прочитал этот вопрос: How to use Java Mission Control to monitor a JVM in a remote server? и не помогают меня.

Я пытаюсь получить доступ к серверу через Интернет и разрешить переадресацию портов для TCP и UDP-порта 7091 на маршрутизаторе, указывая на локальный интерфейс сервера. Эта переадресация портов работает для других сервисов, поэтому я уверен, что в этой части нет ничего плохого.

Java версия на сервере:

java version "1.8.0_11" 
Java(TM) SE Runtime Environment (build 1.8.0_11-b12) 
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) 

Я начинаю JVM на сервере, как это:

java -Xms2048M -Xmx4096M 
-XX:+UnlockCommercialFeatures 
-XX:+FlightRecorder 
-Dcom.sun.management.jmxremote.local.only=false 
-Dcom.sun.management.jmxremote=true 
-Dcom.sun.management.jmxremote.port=7091 
-Dcom.sun.management.jmxremote.authenticate=false 
-Dcom.sun.management.jmxremote.ssl=false 
-Dcom.sun.management.jmxremote.registry.ssl=false 
com.example.MyServer 
-arg1 XXX 
-arg2 YYY 
-arg3 ZZZ 

(я играл много с разными -Dcom.sun.management. .. аргументы и это последняя попытка)

На OSX моя ява версия:

java version "1.8.0_11" 
Java(TM) SE Runtime Environment (build 1.8.0_11-b12) 
Java HotSpot(TM) 64-Bit Server VM (build 25.11-b03, mixed mode) 

ЦУП является версия 5.3.0

я

File - Connect - Create a new connection 
enter Host: DNS name of remote router <I know this is correct> 
Port: 7091 

Когда я "Test Connection" это раз с ошибкой.

(я открыл порт 7091 на сервере с помощью:.? «Суда UFW позволить 7091» мне нужно открыть любые другие порты У)

Как поступить ???

ответ

0

я, наконец, узнал, правильную конфигурацию:

$javabin -Xms2048M -Xmx4096M $GCLOG \ 
-XX:+UnlockCommercialFeatures \ 
-XX:+FlightRecorder \ 
-Djava.rmi.server.hostname=myhost.example.com \ 
-Dcom.sun.management.jmxremote=true \ 
-Dcom.sun.management.jmxremote.port=7091 \ 
-Dcom.sun.management.jmxremote.rmi.port=7091 \ 
-Dcom.sun.management.jmxremote.authenticate=false \ 
-Dcom.sun.management.jmxremote.ssl=false \ 
-Djava.net.preferIPv4Stack=true \ 
    com.example.MyServer -arg1 XXX -arg2 YYY -arg3 ZZZ 

важная часть была ява .rmi.server.hostname = myhost.example.com, где myhost.example.com должен быть разрешен для ext ernal интерфейса вашего маршрутизатора.

Кроме того, при наличии

-Dcom.sun.management.jmxremote.port=7091 \ 
-Dcom.sun.management.jmxremote.rmi.port=7091 \ 

..Я только направить этот один порт в маршрутизаторе.

Я не уверен, что предпочтительнееIPv4 важно, но сейчас меня это не волнует, это работает !!!

0

Это может помочь установить -Djava.rmi.server.hostname =

Вам не нужно устанавливать -Dcom.sun.management.jmxremote.rmi.port = 7091 в явном виде, он должен по умолчанию тот же в com.sun.management.jmxremote.port, но только, чтобы убедиться, что вы могли бы установить, что хорошо ...

+0

Я уже пробовал добавить -Djava.rmi.server.hostname = 192.168.0.100. Я также убедился, что имя хоста -I вернул 192.168.0.100, имя хоста -i возвращает 127.0.0.1 192.168.0.100, а hostname -f возвращает alpha-srv-01. Все еще не работает. –

+1

Оказалось, что вы были правильны (в некотором роде), однако важной частью было то, что это должен быть внешний интерфейс маршрутизатора, а не сервер. –

Смежные вопросы