Каков рекомендуемый способ установки параметров JVM для исполняемых файлов, созданных с помощью sbt-native-packager?

В настоящее время я использую export JAVA_OPTS ... в командной строке, но, похоже, есть и другие возможности, используя build.sbt или внешний файл свойств.

Я нашел несколько соответствующих проблем github здесь, здесь и здесь, но многие параметры сбивают с толку. Есть ли рекомендуемый подход?


person kostja    schedule 20.08.2015    source источник


Ответы (1)


Подход, который вы используете для настройки параметров JVM, зависит в основном от вашего варианта использования:

Вставлять параметры каждый раз

Если вы хотите иметь возможность указывать параметры каждый раз при запуске службы, используйте два механизма: переменные среды и параметры командной строки. То, что вы используете, в основном зависит от вкуса или удобства (но параметры командной строки переопределяют настройки переменных среды).

  • Переменные среды

    Вы можете вводить значения, используя переменную среды JAVA_OPTS. Это определяется как последовательность параметров, передаваемых непосредственно в двоичный файл Java, причем каждый параметр отделяется пробелом.

  • Параметры командной строки

    Вы можете вводить значения, добавляя параметры командной строки в любом из двух форматов:

    • -Dkey=val

      Передает свойство среды Java в двоичный файл java.

    • -J-X

      Передает любой флаг -X в двоичный файл java, удаляя начальный -J.

Вставить параметры из файла, который можно изменить

Если вы хотите получить файл в файловой системе, который можно изменить после установки, вам нужно будет использовать способность sbt-native-packager читать из файла .ini, чтобы инициализировать значение по умолчанию для параметров Java. Подробности этого можно увидеть по адресу http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#file-application-ini-or-etc-default

Следуя инструкциям и в зависимости от используемого вами архетипа, вы получите файл с /etc/default, application.ini или другим произвольным именем, которое будет прочитано сценарием запуска для добавления настроек.

Каждая строка этого файла обрабатывается так, как если бы они были дополнительными параметрами запуска, поэтому по-прежнему применяются те же правила, которые упоминались ранее; например -X флаги должны быть записаны так, как если бы они были -J-X.

Внедрение параметров и кода, которые никогда не нужно менять

Вы можете жестко закодировать изменения непосредственно в сценарий оболочки, который запускается для запуска вашего двоичного файла, используя настройку SBT bashScriptExtraDefines и следуя подробностям на http://www.scala-sbt.org/sbt-native-packager/archetypes/cheatsheet.html#extra-defines

Это самый гибкий вариант с точки зрения возможного (можно написать любой валидный bash-код, и это добавляется в стартовый скрипт). Но он также менее гибкий в том смысле, что впоследствии его нельзя изменить; любые необязательные вычисления должны быть описаны в терминах языка сценариев bash.

person Gary Coady    schedule 21.08.2015
comment
Также есть возможность добавить jvmOption через jvmOptions in Universal, который генерирует application.ini - person Muki; 21.08.2015