У меня есть веб-приложение, которое полагается на некоторые ресурсы и параметры, которые будут настроены после его установки, например соединение JDBC.
То, что я придумал, это предоставить META-INF/context.xml
, который копируется в [engine-name]/[server-name]/[app-name].xml
Tomcat при развертывании приложения. Таким образом, все, что я предоставляю, - это файл войны, который можно скопировать в папку appBase (webapps).
Документация Tomcat говорит, если есть такой файл, он не будет перезаписан, что действительно здорово, так как изменения, сделанные после развертывания, не будут потеряны.
Но здесь есть тонкий вопрос: Поскольку мы развертываем приложение путем копирования в каталог webapps, Tomcat сначала удалит существующее приложение, а также файл конфигурации. Таким образом, файл конфигурации будет потерян/перезаписан, что нежелательно. Tomcat не изменит это поведение, насколько я знаю.
Вопрос: Есть ли способ обойти эту проблему, установив приложение таким образом, чтобы Tomcat не удалял существующий файл конфигурации. Или, есть ли лучший способ упаковки приложения?
Обратите внимание, что мы не хотим устанавливать autoDeploy в false, и мы не можем использовать человеческое вмешательство для установки (что исключает использование веб-приложения Tomcat Manager).
Если я получаю файл конфигурации из .war файла и копирую его отдельно как [engine-name]/[server-name]/[app-name].xml
, Tomcat все равно свяжет его с моим приложением и удалит его после копирования нового .war файла.
Другое предположение: мы заранее не знаем значения конфигурации. Мы предоставим только примерную конфигурацию (если хотите, местозаполнитель), в то время как фактическая конфигурация будет выполнена через некоторое время (не обязательно во время установки).
Спасибо