Как установить контекстный путь в Tomcat, чтобы можно было зайти на сайт без добавления имени развернутой папки?

Я читал об этом в Tomcat guide здесь и некоторые вопросы SO. И мне кажется, что я делаю практически то же самое. Но каким-то образом не могу добиться успеха.

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

Я пытался упаковать свое приложение как ROOT.war , но ничего не вышло. Администратор сказал мне упаковать его под любым именем, которое я хочу, и они позаботятся об этом. Я упаковал его как my-application.war и оно развернулось, но мне пришлось ввести http://my-host/my-application чтобы попасть на сайт.

После обращения к администратору они сказали мне, что они поместили контекстный элемент для моего хоста в конфигурационный файл Tomcat как:


который должен был установить my-application как приложение по умолчанию для всех запросов, приходящих на my-host. Но этого не произошло и всякий раз, когда я ввожу http://my-host я получаю:

HTTP Status 404 - / The requested resource (/) is not available

Но когда я ввожу http://my-host/my-application все работает нормально. Любые предположения о том, что может быть не так, будут приняты с благодарностью.

Обновления:
Я попытался выполнить шаги, описанные в документации tomcat о том, как сделать приложение по умолчанию. Описано 3 способа, и я попробовал все три способа и смог успешно развернуть свое приложение как ROOT на localhost.

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

  1. В server.xml фрагменте, который мне прислал администратор autoDeploy и deployOnStartUp установлены в true, тогда как они должны быть false, если явно определять элемент Context в server.xml. Это приведет к двойному развертыванию, которое создаст папку ROOT и папку с именем файла .war. Удаление .war приведет к удалению соответствующей папки и отмене развертывания приложения, но папка ROOT останется и должна быть удалена вручную и требует перезапуска Tomcat. Пока он не будет перезапущен, любое развертывание ROOT.war будет неудачным.
  2. Я решил, что есть какие-то причины, мешающие развертыванию ROOT.war. Одной из них может быть то, что ROOT.xml существует в conf/{engine-name}/{host-name} или папка ROOT существует в appBase хоста или, как я описал выше, ROOT-приложение из предыдущего развертывания не развернуто и требует перезапуска Tomcat.

В любом случае, я не смог точно определить, что именно мешает ROOT.war развернуться, поскольку для этого требуется доступ к лог-файлам и conf-файлам Tomcat, чтобы проверить описанные выше случаи.

Также из всего, что я вижу, мой администратор кажется неспособным поддерживать сервер Tomcat и найти проблему. Поэтому я решил использовать выделенный сервер Tomcat после того, как столкнулся с проблемой общего сервера.

11
задан doctrey 25 December 2011 в 14:03
поделиться