Автономный файл свойств для файла Java Jar? Как настроить конфигурацию для разных серверов?

Итак, у меня есть исполняемый jar-файл Java, содержащий код библиотеки Java, который будет вызываться PHP, в настоящее время я вызываю код приложения на PHP, как показано ниже:

$ userIdinput = «abcd»; // параметр

exec («java -jar MyApplication.jar». $ userIdinput, $ output);

print_r ($ выход);

Этот JAR-файл должен работать в разных средах QA, Production и моей локальной машине Windows. QA и производство будут на машине Linux. Каждая из этих сред будет иметь свои собственные переменные свойств.

Мне интересно, каков наиболее эффективный способ сделать это, когда я помещаю файл MyApplication.jar в расположение сервера, он будет считывать переменные свойств из файла, который я поместил где-то на сервере?

Я пробовал classpath, но не смог заставить его работать. Большое спасибо за вашу помощь!!!!

0

Решение

Лучший способ установить другую конфигурацию — использовать файл конфигурации. Когда вы запускаете его в своем примере, я предполагаю, что файл jar находится в вашем текущем каталоге. Таким образом, легко иметь там также файл конфигурации и просто читать его из текущего каталога, который также является рабочим каталогом для Java-приложения.

В вашем коде вы можете сделать что-то вроде: File f = new File("configuration") и он попытается найти файл в вашем текущем рабочем каталоге с именем конфигурации.

0

Другие решения

Во-первых, это, вероятно, не очень безопасно, если $userIdinput действительно происходит от некоторого пользовательского ввода. Они могут выйти из вашей команды и выполнить что-то произвольное на вашем сервере.

Как минимум, если вы должен используйте exec вообще, сначала проверьте как можно больше входных данных (если это должно быть целое число, приведите его или выведите ошибку, если это не так) — и также используйте escapeshellarg.

Немного неясно, что вы спрашиваете — но если вы пытаетесь загрузить правильные переменные из файла на сервер в PHP, то есть несколько способов сделать это. Вы можете создать INI-файл с относительным путем, например:

$properties = parse_ini_file("../local_properties.ini");
exec("java -jar MyApplication.jar ".escapeshellarg ( $properties['userIdinput']),$output);

Тогда INI-файл просто должен определить локальные свойства:

; Your local property:
userIdinput = ABCD
0

Самым простым решением для вашей Java-программы является поиск файла свойств в текущем каталоге, например, MyApplication.properties, Пока вызывающая сторона устанавливает текущий каталог в каталог, содержащий файл Jar (который ваш exec пример указывает на то, что .jar неквалифицирован), ваша программа на Java может его найти.

В Linux MyApplication.properties может быть символическая ссылка на реальный файл, вероятно, хранится в /etc,

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

0
По вопросам рекламы [email protected]