Аргумент Java для указания файла Java.Security для JVM - PullRequest
13 голосов
/ 23 декабря 2010

Я ищу аргумент java (или, возможно, какой-то другой метод), чтобы позволить мне указать файл, который будет использоваться JVM, в качестве файла java.security, а не использовать файл, найденный в JDK (в JRE lib).

Чтобы дать вам немного больше контекста, я работаю с сервером WebLogic, который был настроен кем-то другим, и запускает две (или более) разных JVM из одного JDK. Сейчас мы столкнулись с проблемой, когда работа, которую я выполняю на одной JVM, требует файла java.security, отличного от того, который в настоящее время используется другой JVM. Я надеюсь, что у меня будет возможность просто указать моей JVM на новый файл java.security без необходимости указывать на совершенно новый JDK (из-за нехватки места мы хотели бы избежать загрузки JDK, специфичного для каждой JVM ).

Я понимаю, что настройка сервера не идеальна, но полная перестройка существующей установки нежизнеспособна и не то, что я могу сделать. Поэтому я надеюсь, что у кого-то может быть креативное решение, которое позволит нескольким JVM работать под управлением одного JDK, но с разными конфигурациями безопасности.

Я пытался найти решения там, но, похоже, мой Google-Foo не так силен, как я надеялся. Надеюсь, у одного из вас есть ответ!

Большое спасибо.

EDIT
Извините, возможно, мой оригинальный пост был неясным, но я заинтересован в указании файла java.security, также часто называемого основным файлом свойств безопасности Java , а не файлом java.policy, который находится в тот же каталог.

Мое решение

Я опубликую свое решение здесь только для справки о тех, кто может попасть в подобную ситуацию.

Поскольку я не могу найти аргумент для указания при запуске, я решил, что мне придется отказаться от файла свойств java.security. Можно установить свойства и поставщиков (обычно настраиваемые в файле) в коде с помощью класса Security (java.security.Security). Так что, по крайней мере, пока я планирую написать класс, который будет проходить настройку конкретных конфигураций безопасности JVM после запуска (по существу, перезаписывая конфигурации по умолчанию, предоставляемые файлом для другой JVM). Хотя очевидным недостатком этого решения является то, что оно не экстернализует конфигурации безопасности этой JVM, решение предоставляет мне способ установки определенных свойств и поставщиков JVM, не затрагивая конфигурацию других JVM, работающих на том же JDK.

Я ценю время и внимание, уделяемое другими. Спасибо =)

Ответы [ 3 ]

11 голосов
/ 23 декабря 2010

Глядя на источник OpenJDK , вы не можете изменить загрузку файла java.security. Однако этот файл имеет свойство с именем security.overridePropertiesFile, которое, если оно установлено на true (как в моей текущей установке vanilla), позволяет загрузить дополнительный файл свойств безопасности, указанный в системном свойстве с именем java.security.properties. Также обратите внимание, что синтаксис командной строки следует шаблону, аналогичному файлу политики, где = указывает дополнительную конфигурацию, а == указывает полную конфигурацию замены.

7 голосов
/ 23 декабря 2010

Может быть, принятый ответ по этой теме поможет вам; в основном это говорит о том, что вам нужно указать свой собственный файл политики, и окончательный вызов должен выглядеть так:

java -Djava.security.manager -Djava.security.policy=/some/path/my.policy
4 голосов
/ 31 июля 2013

Вы можете просто установить системное свойство -Djava.security.properties = *****, чтобы указать свойство безопасности, которое вы хотите загрузить, но вы должны установить свойство security.overridePropertiesFile = true, прежде чем использовать этот подход.

...