У меня есть военный файл моего заявления. Мне нужно развернуть это на корневом уровне. Текущий URL-адрес http://localhost:8080/war_name/application_name.
Не могли бы вы уточнить, в чем именно ваша проблема? Когда вы развертываете файл war в tomcat, доступ к приложению осуществляется с помощью URL: localhost: 8080 / war_name без расширения .war.
ashishjmeshram
1
Да, вы правы, мне нужно получить доступ к моему приложению. " localhost / application_name ", это я могу получить, когда переименовываю свой военный файл в "ROOT.war", но это выбрасывает исключение из памяти, потому что мой размер военного файла составляет около 120 МБ
iamjustcoder
1
@ user661660 - Похоже, у вас другая проблема - переименование в ROOT.warдолжно работать. Я бы посоветовал задать еще один вопрос о вашем OutOfMemoryException, предоставив трассировку стека и детали. Вероятно, вы можете обойти это, настроив -XmxJVM.
Rob Hruska
.lang.OutOfMemoryError: пространство PermGen 16 марта 2011 г. 9:52:52 com.ebay.kernel.logger.Logger log СЕРЬЕЗНО: ошибка в потоке Perfmon java.lang.OutOfMemoryError: исключение пространства PermGen в потоке «CalClient: NotifyThreadDestroyThread-0 "java.lang.OutOfMemor yError: PermGen space Exception in thread" MetricsSnapshotScheduler "java.lang.OutOfMemoryError: PermG en space 16 марта 2011 г. 9:53:36 AM com.ebay.kernel.logger.Logger log СЕРЬЕЗНАЯ: ошибка в Perfmon thread java.lang.OutOfMemoryError: PermGen space Exception in thread «CalClient: NotifyThreadDestroyThread-0» java.lang.OutOfMemor yError: PermGen space
Если Tomcat настроен на автоматическое развертывание, вам не нужно беспокоиться о варианте 2.
Бухак Синди,
4
@Dejel - Технически ничего. Я сам довольно много этим занимался; он выполняет свою работу. Просто кажется немного неудобным переименовывать свой собственный файл войны во что-то вроде детали реализации контейнера.
Rob Hruska
4
Согласно предоставленной вами ссылке НЕ рекомендуется размещать элементы <Context> непосредственно в файле server.xml
Nilesh
6
В этом ответе рекомендуется метод, который явно упоминается в документации как плохой. Правильный метод подробно описан здесь: stackoverflow.com/questions/41263245/…
Кристофер Шульц
5
+1 за то, что назвал это ROOT.war. Согласно документации Tomcat, вы должны быть очень осторожны при указании «пути», чтобы избежать двойного развертывания: «Даже при статическом определении контекста в server.xml этот атрибут не должен устанавливаться, если либо docBase не находится под хостом. appBase или оба варианта deployOnStartup и autoDeploy - false. Если это правило не соблюдается, вероятно, произойдет двойное развертывание ». - из tomcat.apache.org/tomcat-8.0-doc/config/context.html
Энтони Хейворд,
31
на 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, прежде чем менять корневое веб-приложение, либо просто скопируйте распакованное webapp (app_name) в папку webapps вашего Tomcat. Запуск, зайдите в root, увидите там ваше app_name!
В 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>
Контекстный путь должен быть пустой строкой или начинаться с символа '/'. Путь [ROOT] не соответствует этим критериям и был изменен на [/ ROOT]
Никита Босик 01
11
Я знаю, что мой ответ частично совпадает с некоторым другим ответом, но это полное решение, которое имеет некоторые преимущества. Это работает на Tomcat 8:
Основное приложение обслуживается из корня
Развертывание файлов войны через веб-интерфейс сохраняется.
Основное приложение будет работать на порту 80, в то время как только администраторы имеют доступ к папкам управления (я понимаю, что системы * nix требуют суперпользователя для привязки к 80, но в Windows это не проблема).
Это означает, что вам нужно перезапустить tomcat только один раз, и после обновленных файлов войны можно без проблем развернуть.
Шаг 1. В файле server.xml найдите запись коннектора и замените ее на:
Обратите внимание, что я обратился ко всем приложениям в папке webapp. Первый эффективно переключает рут и главное приложение из положения. ROOT теперь включен, http://example.com/ROOTи основное приложение включено http://example.com/. Для веб-приложений, защищенных паролем, требуется privileged="true"атрибут.
Когда вы развертываете файл CAS.war, который соответствует корневому каталогу ( <Context path="/" docBase="CAS">вам необходимо перезагрузить его в панели администратора, поскольку он не обновляется при развертывании.
Не включайте <Context path="/CAS" docBase="CAS">в свои контексты, так как он отключает параметр диспетчера для развертывания файлов войны. Это означает, что вы можете получить доступ к приложению двумя способами: http://example.com/иhttp://example.com/APP/
Шаг 3: Чтобы предотвратить нежелательный доступ к корневой папке и папке менеджера, добавьте valveк этим тегам контекста, например:
Это существенно ограничивает доступ к папке веб-приложения администратора для людей из моего собственного домена (поддельный IP-адрес) и локального хоста, когда они используют порт по умолчанию 8080 и поддерживает возможность динамического развертывания файлов войны через веб-интерфейс.
Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес в соединитель ( address="143.21.2.1").
Если вы хотите запустить несколько веб-приложений из корневого каталога, вы можете продублировать тег службы (используйте другое имя для второго) и изменить базу документации, <Context path="/" docBase="CAS">например, на <Context path="/" docBase="ICR">.
Он работает с Tomcat 8. Для autoDeploy и deployOnStartup необходимо установить значение false, чтобы предотвратить повторное развертывание Tomcat myApp.
Я попытался загрузить WAR, но ничего не вышло. Это только для взорванных WAR?
logixplayer
Я попытался загрузить WAR, но он не сработал на примере @ Jingguo. Это только для взорванных WAR? РЕДАКТИРОВАТЬ: Это действительно ТОЛЬКО для взорванных войн. Почему это? Можно ли просто загрузить WAR и избежать этого двойного шага? Как я могу заставить это работать?
logixplayer
@logixplayer. Мое решение работает с WAR. Я не взорвал его. Я забыл упомянуть, что $CATALINA_HOME/webapps/ROOTнужно удалить. Удалите его и попробуйте еще раз.
Jingguo Yao
Я удалил ROOT как вы сказали. Я развернул свою WAR (не взорванный каталог). Я заметил, что был создан новый ROOT-каталог с моими данными, например WEB-INF. Сайт запущен. Это так, как должно работать?
logixplayer
Я также пробовал этот метод, и все, когда я пытаюсь открыть страницу в браузере, он просто ждет сервера. Catalina.out только сообщает, что сервер был запущен.
Asu
1
В дополнение к Sol @Rob Hruska, этот параметр в server.xml внутри секции работает:
откройте url-адрес диспетчера контактов: - http: // localhost: 8080 / manager / html /,
затем в приложениях вы увидите приложение, путь которого развернут в виде «/». Просто отмените развертывание . Переименуйте файл war вашего приложения как ROOT.war и просто укажите путь: -
запустите Tomcat Никакой дополнительной настройки не требуется.
Теперь мы можем увидеть домашнюю страницу нашего приложения или настроенный URL по адресу http: // localhost: 8080. C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
ROOT.war
должно работать. Я бы посоветовал задать еще один вопрос о вашемOutOfMemoryException
, предоставив трассировку стека и детали. Вероятно, вы можете обойти это, настроив-Xmx
JVM.Ответы:
У вас есть несколько вариантов:
Удалите
ROOT/
готовый каталог из tomcat и переименуйте файл war вROOT.war
перед его развертыванием.Развертывание войны (из вашего примера)
war_name.war
и настроить корневой контекст вconf/server.xml
использовать военный файл:Первый вариант проще, но немного сложнее. Второй способ, вероятно, более элегантный.
источник
на tomcat v.7 (ванильная установка)
в вашем conf / server.xml добавьте следующий бит в конец файла, непосредственно перед
</Host>
закрывающим тегом:Обратите внимание, что атрибут docBase . Это важный момент. Вы либо убедитесь, что развернули app_name, прежде чем менять корневое веб-приложение, либо просто скопируйте распакованное webapp (app_name) в папку webapps вашего Tomcat. Запуск, зайдите в root, увидите там ваше app_name!
источник
В tomcat 7 с этими изменениями я могу получить доступ к myAPP в / и ROOT в / ROOT
Добавьте выше в
<Host>
раздел server.xmlисточник
Я знаю, что мой ответ частично совпадает с некоторым другим ответом, но это полное решение, которое имеет некоторые преимущества. Это работает на Tomcat 8:
Это означает, что вам нужно перезапустить tomcat только один раз, и после обновленных файлов войны можно без проблем развернуть.
Шаг 1. В файле server.xml найдите запись коннектора и замените ее на:
Шаг 2. Определите контексты в
<Host ...>
теге:Обратите внимание, что я обратился ко всем приложениям в папке webapp. Первый эффективно переключает рут и главное приложение из положения. ROOT теперь включен,
http://example.com/ROOT
и основное приложение включеноhttp://example.com/
. Для веб-приложений, защищенных паролем, требуетсяprivileged="true"
атрибут.Когда вы развертываете файл CAS.war, который соответствует корневому каталогу (
<Context path="/" docBase="CAS">
вам необходимо перезагрузить его в панели администратора, поскольку он не обновляется при развертывании.Не включайте
<Context path="/CAS" docBase="CAS">
в свои контексты, так как он отключает параметр диспетчера для развертывания файлов войны. Это означает, что вы можете получить доступ к приложению двумя способами:http://example.com/
иhttp://example.com/APP/
Шаг 3: Чтобы предотвратить нежелательный доступ к корневой папке и папке менеджера, добавьте
valve
к этим тегам контекста, например:Это существенно ограничивает доступ к папке веб-приложения администратора для людей из моего собственного домена (поддельный IP-адрес) и локального хоста, когда они используют порт по умолчанию 8080 и поддерживает возможность динамического развертывания файлов войны через веб-интерфейс.
Если вы хотите использовать это для нескольких приложений, использующих разные IP-адреса, вы можете добавить IP-адрес в соединитель (
address="143.21.2.1"
).Если вы хотите запустить несколько веб-приложений из корневого каталога, вы можете продублировать тег службы (используйте другое имя для второго) и изменить базу документации,
<Context path="/" docBase="CAS">
например, на<Context path="/" docBase="ICR">
.источник
Самый быстрый способ.
Убедитесь, что у вас не развернуто приложение ROOT, удалите его, если оно у вас есть
Переименуйте свою войну в ROOT.war, разверните, и все, никаких изменений конфигурации не требуется
источник
Удалить
$CATALINA_HOME/webapps/ROOT
. Обновите$CATALINA_HOME/conf/server.xml
, убедитесь, что элемент Host выглядит как следующий текст:Он работает с Tomcat 8. Для autoDeploy и deployOnStartup необходимо установить значение false, чтобы предотвратить повторное развертывание Tomcat
myApp
.источник
$CATALINA_HOME/webapps/ROOT
нужно удалить. Удалите его и попробуйте еще раз.В дополнение к Sol @Rob Hruska, этот параметр в server.xml внутри секции работает:
Примечание. В некоторых случаях может потребоваться override = "true".
источник
Добавляя к ответу @Dima , если вы используете
maven
для создания своего пакета, вы можете указать ему установить имя файла WARROOT
вpom.xml
:По умолчанию веб-приложение
tomcat
будет развернутоROOT.war
в корневом контексте (/
).источник
откройте url-адрес диспетчера контактов: - http: // localhost: 8080 / manager / html /,
затем в приложениях вы увидите приложение, путь которого развернут в виде «/».
Просто отмените развертывание . Переименуйте файл war вашего приложения как ROOT.war и просто укажите путь: - запустите Tomcat Никакой дополнительной настройки не требуется. Теперь мы можем увидеть домашнюю страницу нашего приложения или настроенный URL по адресу http: // localhost: 8080.
C:\Program Files\Apache Software Foundation\Tomcat 8.5\webapps
источник
На моем сервере я использую это, и автоматическое развертывание root работает нормально:
источник