Apache WS44J неправильно принимает переменные окружения
У меня есть файл свойств в моем весеннем загрузочном приложении, которое использует переменные среды
org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=${env:keyStorePassword}
org.apache.ws.security.crypto.merlin.keystore.alias=${env:keyAlias}
org.apache.ws.security.crypto.merlin.keystore.file=${env:keyStoreFilePath}
Однако он говорит, что не может найти файл, и в то же время указывает путь к файлу. Таким образом, он извлекает значение из файла среды правильно. Я также скопировал и поместил буквенные значения вместо переменных среды в файл свойств, и это сработало отлично. Почему, когда я извлекаю информацию из окружения, он не может найти файл?
Это журнал ошибок
17:06:12.537 [http-nio-8080-exec-1] DEBUG org.apache.ws.security.util.Loader - Trying to find [<file>] using org.springframework.boot.loader.LaunchedURLClassLoader@38af3868 class loader.
17:06:12.542 [http-nio-8080-exec-1] DEBUG org.apache.ws.security.util.Loader - Trying to find [<file>] using org.springframework.boot.loader.LaunchedURLClassLoader@38af3868 class loader.
17:06:12.559 [http-nio-8080-exec-1] DEBUG org.apache.ws.security.util.Loader - Trying to find [<file>] using ClassLoader.getSystemResource().
17:06:12.568 [http-nio-8080-exec-1] DEBUG org.apache.ws.security.components.crypto.Merlin - <file> (No such file or directory)
java.io.FileNotFoundException: ${env:keyStoreFilePath} (No such file or directory)
Тег - это тот же путь к файлу, что и в переменной среды.
Спасибо за любую помощь, которую вы можете предоставить.
1 ответ
Я решил эту ошибку, по причинам, которые я до сих пор не до конца понимаю, переменная окружения хранилась в каком-то другом формате. Поэтому вместо этого я вставил переменные в файл свойств с помощью старой доброй Java.
try {
PropertiesConfiguration props = new PropertiesConfiguration(System.getenv("SIGNATURE_PROPS_FILE"));
props.setProperty("org.apache.ws.security.crypto.merlin.keystore.password", System.getenv("KEY_STORE_PASSWORD"));
props.setProperty("org.apache.ws.security.crypto.merlin.keystore.alias", System.getenv("KEY_ALIAS"));
props.setProperty("org.apache.ws.security.crypto.merlin.keystore.file", System.getenv("KEY_STORE_FILE"));
props.save();
logger.debug("** signature.properties updated Successfully!! **");
} catch (ConfigurationException e) {
logger.error(e.getMessage());
}