2013-06-19 5 views
2

Мое приложение развернуто на Tomcat, и я настроил переменную окружения JAVA_OPTS в /etc/default/tomcat7.получить JAVA_OPTS во время выполнения

Кажется, что существует миллион различных мест, где эти переменные могут быть предоставлены Tomcat, поэтому я хочу проверить, что значения, которые я предоставляю, - это то, что на самом деле используется. Есть ли что-то, что я могу проверить во время выполнения, чтобы определить значение этой переменной. Я проверил System.getProperties(), но, похоже, это не так.

+3

http://docs.oracle.com/javase/6/docs/api/java/lang/System.html# GETENV (java.lang.String) – PeterMmm

ответ

2

Если вы ищете только переопределения свойств и аргументы виртуальной машины Java, вы можете использовать RuntimeMXBean:

RuntimeMXBean mxBean = ManagementFactory.getRuntimeMXBean(); 
System.out.println(mxBean.getInputArguments()); 

Например, запуск с помощью следующей командной строки:

java -Xms512m -Xmx1024m -Dtest.prop=foo com.example.sandbox.RuntimeMXBeanExample 

Я получаю следующий результат:

[-Xms512m, -Xmx1024m, -Dtest.prop=foo] 

Неправильно e, что это делает , а не, включают аргументы, переданные методу main().

0

Вы можете использовать System.getenv("JAVA_OPTS"), как предложено.

Если вы не хотите, чтобы изменить код, чем вы можете использовать некоторые из этих методов

Java Инструменты

  1. jps -v отображает Java обрабатывает аргументы

  2. jvisualvm подключается к процессу Java и давайте проверим количество свойств, включая MXBeans

инструменты GNU/Linux

  1. ps e переменные среды отображает передаваемые процессы
1

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

Ниже будет работать:

Пример: Java -classpath. -Dformat = XLS -DTabname = \ "База данных новых \" com.cg.bench.GenerateReport

Ниже не будет работать:

НЕПРАВИЛЬНО Пример: Java -classpath. com.cg.bench.GenerateReport -Dformat = xls -DTabname = \ "Базовые данные new \"

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