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());
}
Другие вопросы по тегам