Развертывание войны. Tomcat не учитывает context.xml из META-INF - PullRequest
0 голосов
/ 15 октября 2019

У меня есть приложение Spring Boot, которое использует пользовательский context.xml для tomcat. Context.xml содержит свойство, определяющее активный профиль пружины

<Context>
    <Environment name="spring.profiles.active" value="profileName" type="java.lang.String" override="false" />
</Context>

Расположение файла: / src / main / webapps / META-INF. Я ожидал, что после развертывания файла в tomcat, контекст xmltomcat будет автоматически выбран и брошен в conf / catalina / localhost /

Как оказалось, война развернулась, но conf / catalina / localhost осталась пустой.

После прочтения документов я обнаружил, что server.xml должен быть обновлен с параметром copyXML в качестве контейнера Host. Документация гласит:

copyXML Установите значение true, если вы хотите, чтобы контекстный XML-дескриптор, встроенный в приложение (расположенный в /META-INF/context.xml), был скопирован в xmlBase при развертывании приложения. ,При последующих запусках скопированный контекстный XML-дескриптор будет использоваться в предпочтении перед любым контекстным XML-дескриптором, встроенным в приложение, даже если дескриптор, встроенный в приложение, является более новым. Значением флага по умолчанию является false. Обратите внимание, что если deployXML имеет значение false, этот атрибут не будет действовать.

Мой хост выглядит как

<Host name="localhost"  appBase="webapps"
                  unpackWARs="true" autoDeploy="true" copyXML="true">
            </Host>

После перезапуска сервера и повторного развертывания приложения, / conf / Catalina /localhost по-прежнему оставался пустым.

Есть ли у вас какие-либо предложения, какие действия необходимо предпринять, чтобы использовать custom context.xml?

1 Ответ

0 голосов
/ 15 октября 2019

Я понял это. Мой сценарий сборки не копировал файл правильно, имя файла было не «context.xml», а «appName.xml», и tomcat не поднял его.

...