«1. Обзор

В этой быстрой статье мы обсудим развертывание веб-приложения в корневом каталоге Tomcat.

2. Основы и терминология развертывания Tomcat

Во-первых, основы развертывания приложения на Tomcat можно найти в этом руководстве: Как развернуть файл WAR на Tomcat.

Проще говоря, веб-приложения размещаются в папке $CATALINA_HOME\\webapps, где $CATALINA_HOME — это каталог установки Tomcat.

Контекстный путь относится к местоположению относительно адреса сервера, который представляет имя веб-приложения.

По умолчанию Tomcat получает его от имени развернутого файла войны. Поэтому, если мы развернем файл ExampleApp.war, он будет доступен по адресу http://localhost:8080/ExampleApp. т. е. контекстный путь — /ExampleApp.

Если нам теперь нужно, чтобы это приложение было доступно по адресу http://localhost:8080/, у нас есть несколько вариантов, которые мы обсудим в следующих разделах.

Более подробное объяснение концепции контекста Tomcat см. в официальной документации Tomcat.

3. Развертывание приложения как ROOT.war

Первый вариант очень прост: нам просто нужно удалить папку /ROOT/ по умолчанию в $CATALINA_HOME\\webapps, переименовать наш ExampleApp.war в ROOT.war и развернуть его.

Теперь наше приложение будет доступно по адресу http://localhost:8080/.

4. Указание контекстного пути в файле server.xml

Второй вариант — указать контекстный путь приложения в файле server.xml (который находится в $CATALINA_HOME\\conf).

Для этого мы должны вставить в тег \u003cHost\u003e следующее:

<Context path="" docBase="ExampleApp"></Context>

Примечание: определение контекстного пути вручную имеет побочный эффект, заключающийся в том, что приложение по умолчанию развертывается дважды: на http://localhost: 8080/ExampleApp/, а также по адресу http://localhost:8080/.

Чтобы предотвратить это, мы должны установить autoDeploy=“false” и deployOnStartup=“false” в теге \u003cHost\u003e:

<Host name="localhost" appBase="webapps" unpackWARs="true"
  autoDeploy="false" deployOnStartup="false">
    <Context path="" docBase="ExampleApp"></Context>

    <!-- Further settings for localhost -->
</Host>

Важно: эта опция больше не рекомендуется, поскольку Tomcat 5: это делает конфигурации контекста более инвазивными, поскольку файл server.xml нельзя перезагрузить без перезапуска Tomcat.

5. Указание контекстного пути в XML-файле приложения

Чтобы избежать этой проблемы с server.xml, у нас есть третий вариант: мы установим контекстный путь в специфичном для приложения XML-файле. файл.

Поэтому мы должны создать ROOT.xml в $CATALINA_HOME\\conf\\Catalina\\localhost со следующим содержимым:

<Context docBase="../deploy/ExampleApp.war"/>

Два очка здесь ничего не стоят.

Во-первых, нам не нужно указывать путь явно, как в предыдущем варианте — Tomcat получает его из имени нашего ROOT.xml.

Во-вторых, поскольку мы определяем наш контекст в файле, отличном от server.xml, наша база документов должна находиться за пределами $CATALINA_HOME\\webApps.

6. Заключение

В этом руководстве мы обсудили различные варианты развертывания веб-приложения в корневом каталоге Tomcat.