Как установить параметры среды среды дистанционного управления JMX дистанционного управления через код Java для удаленного мониторинга?

У меня есть программа, которая требует динамически (то есть во время выполнения), открывая доступную розетку и запустить агент JMX. Этот JMX параметры устанавливаются внутри кода Java, а не через командную строку. Это работает нормально. После этого необходимо для мониторинга (i.e expery jmx commands etc) через Java Visual VM Удаленно

Агент сервера RMI в программе находится на строках из-за управления коробкой, описанным по адресу: http://download.orcle.com/javase/6/docs/technotes/gides/manyagement/agent.html

Вопрос, которого у меня можно обобщить как: Как такие свойства командной строки могут быть установлены на системный уровень Через код Java, так что можно использовать удаленный профилирование ??

-Dcom.sun.management.jmxremote.port=1234

Если «JMXREMOTE.PORT» и другие параметры устанавливаются через командную строку, Удаленный мониторинг работает нормально. Я пытаюсь найти способ сделать это через Java И не через командную строку.

Программа не может указывать порт через командную строку, поскольку новый доступный порт должен быть выяснен во время выполнения.

Процесс нуждается в удаленном мониторинге, и он работает нормально. Если в командной строке не указано следующие параметры, Java Visual VM не подключается к процессу.

-Dcom.sun.management.jmxremote.port=1234
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Djava.rmi.server.hostname=10.0.0.128

Я пробовал.

System.setProperty("com.sun.management.jmxremote.port",Integer.toString(port));

Это одно из первых, сделанных в программе перед запуском JMXConnectorServer. К сожалению, это не признается. Только свойства времени выполнения (то есть, указанные через командную строку, распознаются для подключения JMX Visual VIGAL VM).

Также наткнулся на просмотр свойств, которые могут быть извлечены из классов сбора Java, но не смогли достичь, как проследить свойство «Com.sun.management.jmxremote.port =»

public static void setEnv(Map newenv) throws Exception {
  Class[] classes = Collections.class.getDeclaredClasses();
  Map env = System.getenv();

  for(Class cl : classes) {

    if("java.util.Collections$UnmodifiableMap".equals(cl.getName())) {

      Field field = cl.getDeclaredField("m");
      field.setAccessible(true);

      Object obj = field.get(env);
      Map map = (Map) obj;

      //map.clear();
      map.putAll(newenv);
    }
  }
}

Любая помощь будет оценена!

9
задан J.P. Armstrong 12 September 2013 в 15:16
поделиться