Вопрос-ответ

Deploying my application at the root in Tomcat

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

У меня есть файл war моего приложения. Мне нужно развернуть его на корневом уровне. Текущий URL-адрес http://localhost:8080/war_name/application_name.

Переведено автоматически
Ответ 1

У вас есть несколько вариантов:


  1. Удалите готовый ROOT/ каталог из tomcat и переименуйте свой war-файл в ROOT.war перед его развертыванием.


  2. Разверните свой war как (из вашего примера) war_name.war и настройте контекстный root в conf/server.xml для использования вашего файла war :


    <Context path="" docBase="war_name" debug="0" reloadable="true"></Context>

Первый способ проще, но немного сложнее. Второй, вероятно, является более элегантным способом сделать это.

Ответ 2

на tomcat v.7 (ванильная установка)

в вашем conf/server.xml добавьте следующий бит в конце файла, непосредственно перед </Host> закрывающим тегом:

<Context path="" docBase="app_name">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Обратите внимание на этот атрибут docBase. Это важный момент. Вы либо убедитесь, что вы развернули app_name, прежде чем изменять корневое веб-приложение, либо просто скопируйте распакованное веб-приложение (app_name) в папку webapps вашего tomcat. Запуск, зайдите в root, там увидите ваше app_name!

Ответ 3

В tomcat 7 с этими изменениями я могу получить доступ к MyApp по адресу / и ROOT по адресу / ROOT

<Context path="" docBase="myAPP">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="ROOT" docBase="ROOT">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Добавить выше в <Host> раздел в server.xml

Ответ 4

Я знаю, что мой ответ частично совпадает с некоторыми другими ответами, но это комплексное решение, которое имеет некоторые преимущества. Это работает на Tomcat 8:


  1. Основное приложение обслуживается из корневого каталога

  2. Поддерживается развертывание файлов war через веб-интерфейс.

  3. Основное приложение будет запускаться на порту 80, в то время как только администраторы будут иметь доступ к папкам управления (я понимаю, что для систем * nix требуется суперпользователь для привязки к 80, но в Windows это не проблема).

Это означает, что вам нужно перезапустить tomcat только один раз, и после обновления файлы war могут быть развернуты без проблем.

Шаг 1: В файле server.xml найдите запись connector и замените ее на:

<Connector 
port="8080"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

<Connector
port="80"
protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />

Шаг 2:
Определите контексты внутри тега <Host ...>:

<Context path="/" docBase="CAS">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/ROOT" docBase="ROOT">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>
<Context path="/host-manager" docBase="host-manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
</Context>

Обратите внимание, что я обратился ко всем приложениям в папке webapp. Первое эффективно переключает root и основное приложение из одного положения в другое. ROOT теперь включен http://example.com/ROOT и основное приложение включено http://example.com/. Для веб-приложений, защищенных паролем, требуется атрибут privileged="true".

При развертывании файла CAS.war, который соответствует корневому каталогу (<Context path="/" docBase="CAS"> вам необходимо перезагрузить его в панели администратора, поскольку он не обновляется при развертывании.

Не включайте <Context path="/CAS" docBase="CAS"> в свои контексты, поскольку это отключает опцию диспетчера для развертывания файлов war. Это означает, что вы можете получить доступ к приложению двумя способами: http://example.com/ и http://example.com/APP/

Шаг 3: Чтобы предотвратить нежелательный доступ к корневой папке и папке менеджера, добавьте valve к этим контекстным тегам, подобным этому:

<Context path="/manager" docBase="manager" privileged="true">
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
addConnectorPort="true"
allow="143\.21\.2\.\d+;8080|127\.0\.0\.1;8080|::1;8080|0:0:0:0:0:0:0:1;8080"/>
</Context>

Это существенно ограничивает доступ к папке admin web app для пользователей из моего собственного домена (поддельный IP-адрес) и localhost, когда они используют порт 8080 по умолчанию, и сохраняет возможность динамического развертывания файлов war через веб-интерфейс.

Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес в соединитель (address="143.21.2.1").

Если вы хотите запускать несколько веб-приложений из корневого каталога, вы можете дублировать тег Service (используйте другое имя для второго) и изменить базу данных документа <Context path="/" docBase="CAS"> на, например, <Context path="/" docBase="ICR">.

2023-10-14 06:03 java tomcat