Установка свойств системы Java без ввода значений в командную строку

У меня есть код Java, который зависит от системного свойства super.secret.password . Мне нужно установить это свойство при запуске приложения. Приложение будет запущено сценарием оболочки, а пароль будет храниться в файле с минимальными разрешениями на чтение.

Я действительно не хочу писать:

java -Dsuper.secret.password=letmein gov.fortknox.MyApp

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

Итак, есть ли хороший способ установить свойства системы, не отображая их в командной строке?

Единственное общее решение, которое мы придумали, - это написать небольшую программу на C, которая считывает системные свойства из файла, а затем запускает JVM, используя API вызова JNI . Излишне говорить, что мы не хотим этого делать.

Если нет способа установить их без использования командной строки, есть ли способ скрыть командную строку от посторонних глаз? Мы используем Red Hat Enterprise Linux Server 5.5.

Как бы то ни было, рассматриваемое приложение на самом деле является JBoss EAP 4.3.0, и мы используем системные свойства для заполнения конструкций подстановки ( $ { like.this} ) в своих файлах конфигурации XML. Существуют специальные решения для JBoss - либо используйте SystemPropertiesService (по умолчанию настраивается через файл properties-service.xml в каталоге развертывания) или передайте параметр -P для run.sh. Однако меня интересует более общий случай, когда это может быть любая программа на Java.

6
задан Tom Anderson 27 October 2011 в 17:11
поделиться