Прочитать общий внешний файл свойств в Java Webapp и обычном приложении Java
Я знаю, что этот вопрос ответил много раз с самым полезным ответом, как показано ниже,
Где разместить и как читать файлы ресурсов конфигурации в сервлет-приложении?
Однако у нас есть специальное требование, как показано ниже,
- Webapp будет развернут в tomcat.
- Обычное java-приложение в форме .jar будет помещено в папку /myapp
- Файл myappConfig.property будет помещен в /myapp
Структура каталога на клиентской машине
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
В основном myapp.jar и myapp.war будут обращаться к значениям соединения sql db для подключения базы данных MySql и операций db.
Доступ к myappConfig.property из myapp.jar → Работает отлично
File jarPath = new File(Myapp.class.getProtectionDomain().getCodeSource().getLocation().getPath());
String propertiesPath = jarPath.getParent();
System.out.println(" propertiesPath-" + propertiesPath);
mainProperties.load(new FileInputStream(propertiesPath + "\\assets\\myapp.property"));
Может ли кто-нибудь помочь/предложить, как реализовать,
Доступ к файлу myappConfig.property из mywebapp,
при изменении времени выполнения в файле myappConfig.property не требуется перенаправление myapp.war
Спасибо за вашу помощь заранее.
изменить
Ниже приведены шаги, по которым мы хотим доставить проект клиенту.
-
Ниже приведен каталог приложений
/myapp
/myapp.jar
/assests/myappConfig.property
/tomcat/webapps/myapp.war
-
упакуйте все в одном пакете с помощью некоторого инструмента для упаковки.
-
Запустите этот пакет на клиентской машине в любом месте и будет иметь такую же структуру каталогов, что и выше
-
Здесь я не хочу жестко кодировать любое местоположение в webapp или tomcat для "/assests/myappConfig.property"
-
Обычное приложение Java Я могу прочитать файл свойств, но для wepapp я не понимаю, как это сделать?
Ответы
Ответ 1
Вы можете добавить <context>
в tomcat/conf/server.xml(в этом примере путь linux):
<Context docBase="/home/yourusername/tomcat/assests" path="/assets" />
Если вы используете Windows:
<Context docBase="C:\path\to\myapp\assets" path="/assets" />
И затем вы можете получить к нему доступ, как и любой другой ресурс в вашем веб-приложении (например:/assets/myappConfig.property).
Если вы используете JDBC, например, вы можете сохранить свойства соединения в Singleton и запросить его оттуда, и этот класс может позаботиться об изменениях в этом файле.