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
).
Для этого мы должны вставить в тег <Host>
следующее :
<Context path="" docBase="ExampleApp"></Context>
Примечание: определение контекстного пути вручную имеет побочный эффект, заключающийся в том, что приложение по умолчанию развертывается дважды : на http://localhost:8080/ExampleApp/
, а также на http://localhost:8080/
.
Чтобы предотвратить это, мы должны установить autoDeploy="false"
и deployOnStartup="false"
в теге <Host>
:
<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.