Развертывание моего приложения в корне в Tomcat - PullRequest
121 голосов
/ 16 марта 2011

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

Ответы [ 8 ]

200 голосов
/ 16 марта 2011

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

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

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

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

Первый из них легче, но немного сложнее.Второй способ, вероятно, более элегантный.

31 голосов
/ 27 июля 2012

на tomcat v.7 (установка vanilla)

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

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

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

13 голосов
/ 14 августа 2013

В 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

9 голосов
/ 21 октября 2015

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

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

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

Шаг 1. В файле server.xml найдите элемент коннектора и замените его на:

<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 теперь на 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 к таким тегам контекста, например:

<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>

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

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

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

.
5 голосов
/ 13 мая 2015

Удалить $CATALINA_HOME/webapps/ROOT. Обновите $CATALINA_HOME/conf/server.xml, убедитесь, что элемент Host выглядит следующим образом:

<Host name="localhost"  appBase="webapps"
      unpackWARs="true" autoDeploy="false" deployOnStartup="false">
  <Context path="" docBase="myApp"></Context>

Работает с Tomcat 8. Для autoDeploy и deployOnStartup необходимо установить значение false, чтобы предотвратить повторное развертывание tomcat myApp.

4 голосов
/ 15 августа 2013

Самый быстрый способ.

  1. Убедитесь, что у вас не развернуто приложение ROOT, отмените развертывание, если оно у вас есть

  2. Переименуйте вашу войну в ROOT.war, разверните, вот и все, никаких изменений в конфигурации не требуется

1 голос
/ 06 мая 2014

Если добавить к @Rob Hruska's sol, этот параметр в разделе server.xml внутри раздела работает:

<Context path="" docBase="gateway" reloadable="true" override="true"> </Context>

Примечание: в некоторых случаях может потребоваться override = "true".

0 голосов
/ 25 ноября 2013

На моем сервере я использую это, и автоматическое развертывание root работает просто отлично:

   <Host name="mysite" autoDeploy="true" appBase="webapps" unpackWARs="true" deployOnStartup="true">
        <Alias>www.mysite.com</Alias>
        <Valve className="org.apache.catalina.valves.RemoteIpValve" protocolHeader="X-Forwarded-Proto"/>
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
           prefix="mysite_access_log." suffix=".txt"
           pattern="%h %l %u %t &quot;%r&quot; %s %b"/>
        <Context path="/mysite" docBase="mysite" reloadable="true"/>
    </Host>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...