Первый способ проще, но немного сложнее. Второй, вероятно, является более элегантным способом сделать это.
Ответ 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:
Основное приложение обслуживается из корневого каталога
Поддерживается развертывание файлов war через веб-интерфейс.
Основное приложение будет запускаться на порту 80, в то время как только администраторы будут иметь доступ к папкам управления (я понимаю, что для систем * nix требуется суперпользователь для привязки к 80, но в Windows это не проблема).
Это означает, что вам нужно перезапустить tomcat только один раз, и после обновления файлы war могут быть развернуты без проблем.
Шаг 1: В файле server.xml найдите запись connector и замените ее на:
Обратите внимание, что я обратился ко всем приложениям в папке 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 к этим контекстным тегам, подобным этому:
Это существенно ограничивает доступ к папке admin web app для пользователей из моего собственного домена (поддельный IP-адрес) и localhost, когда они используют порт 8080 по умолчанию, и сохраняет возможность динамического развертывания файлов war через веб-интерфейс.
Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес в соединитель (address="143.21.2.1").
Если вы хотите запускать несколько веб-приложений из корневого каталога, вы можете дублировать тег Service (используйте другое имя для второго) и изменить базу данных документа <Context path="/" docBase="CAS"> на, например, <Context path="/" docBase="ICR">.