Перейти к основному содержимому

Развертывание приложения в Tomcat Root

· 3 мин. чтения

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.