Есть ли способ иметь разные переменные среды для разных военных файлов в tomcat? Я использую стороннюю войну и нуждаюсь в нескольких развертываниях той же войны, но с разными переменными среды (поэтому он загружает разные конфигурации).Различные переменные среды на войну в tomcat
ответ
Его легко, если вы запускаете два экземпляра Tomcat самостоятельно. Я предполагаю, что вы говорите об переменных среды ОС.
Вы также можете установить свойства в Tomcat для каждого военного/веб-приложения. Это позволит вам запустить две войны в одном экземпляре Tomcat. Но это не то, что вы спросили.
Да, мне нужно установить значение в качестве переменной окружения ОС (на самом деле нужно просто войти в System.getenv). Я мог бы попытаться настроить два разных кота (для atm нужны только два разных пути), так я бы просто сделал это в bin/setenv.sh или там лучше? – ekaqu
Его очень легко с версией Tomcat от tcServer. Вам придется обратиться к Google, чтобы узнать, как с ванильным Tomcat. Я бы, вероятно, просто установил два сценария оболочки в inetd, которые запускали тот же экземпляр Tomcat, но устанавливали среду по-разному заранее. –
@ekaqu буквально просто скопировать и вставить весь каталог TC –
Ok, общая ума хак идея:
Реализовать PropertyPlayHolderConfigurer (или использовать web.xml из Tomcat) для каждого экземпляра приложения и свойств нагрузки такое же имя, как у вас есть для System.properties().
Затем создайте класс свойств делегата, который содержит оба набора свойств. Тогда
Properties props = new DelegatingProperties(app1Props,app2Props)
System.setProperties(delegate);
public class DelegatingProperties extends Properties {
private Properties app1Props;
private Properties app2Props;
public DelegatingProperties(Properties app1Props, Properties app2Props) {
this.app1Props = app1Props;
this.app2Props = app2Props;
}
public String getProperty(String prop) {
// begin crazy science
String caller = new Throwable().getStackTrace()[0].getClassName();
// this is where you get creative.
// Do the System.setProperties() above so you can intercept calls to
//getProperty()
// and find out the FQCN of the library class(es) that need these variable
// (use your debugger).
// then implement the logic here to decide which of the 2 property sets you have
// you will query to get the correct results
}
}
Это SYSTEM свойства мы говорим, и они предназначены для применения во всей системе. Вероятно, ваша библиотека была разработана, когда она была 1-app-1-jvm (или разработчик - это тред, который также вероятно).
Могу ли я получить реквизит для творчества? :)
- 1. Различные экземпляры Tomcat на Windows
- 2. Как настроить переменные среды в Tomcat?
- 3. Разверните войну с tomcat
- 4. Переменные искусственной среды на CentOS
- 5. Переменные среды в Jenkins
- 6. Gradle: скопировать войну TOMCAT каталога
- 7. Не могу объявить войну Tomcat
- 8. Переменные окружения в Tomcat
- 9. Как передислоцировать войну в tomcat без проблем?
- 10. Экспортированные переменные среды vs Переменные среды
- 11. различные среды в CakePHP?
- 12. Как настроить различные среды узлов
- 13. Переменные среды
- 14. Переменные среды Linux, ссылающиеся на другие переменные
- 15. переменные среды отладки android
- 16. Разверните войну на Tomcat без названия войны в URL-адрес
- 17. Java, развертывающая войну с Tomcat, давая NoClassDefFoundError
- 18. Переменные среды в Makefile
- 19. Переменные среды в C#
- 20. Переменные среды Maven на MACOSX
- 21. Докер-Compose переменные среды
- 22. Docker: Различные переменные ENV для среды разработки и производства
- 23. Tomcat развернул войну и разбиение кода Webpack
- 24. IntelliJ Tomcat Run Configuration не устанавливает переменные среды
- 25. Eclipse Tomcat - переменная среды контекста
- 26. Переменные среды в database.php
- 27. Переменные среды в Докер
- 28. Переменные среды в функции
- 29. Разверните войну с проблемой конфигурации tomcat
- 30. Как развернуть войну Grails для tomcat
Это ** ИМЕЕТ ** быть переменной окружения или это только ваш способ выразить проблему? –
сторонний код делает System.getenv, поэтому он должен быть там – ekaqu