Я читал об этом в путеводителе Tomcat здесь и некоторые вопросы SO. И я думаю, что я в значительной степени делаю то же самое. Но каким-то образом добиться успеха не удастся.
Прежде всего, я должен сказать, что мое приложение развернуто на общем сервере Tomcat, на котором я не контролирую. Я просто отбрасываю свой .war файл и развертывается.
Я пытался упаковать свое приложение как ROOT.war, но не работал. Администратор сказал мне, чтобы он упаковал его как любое имя, которое я хочу, и они позаботятся об этом. Я упаковал его как my-application.war, и он развернулся, но мне нужно ввести http://my-host/my-application, чтобы попасть на сайт.
После обращения к администратору они сказали мне, что они установили элемент контекста в моем хосте в файле конфигурации Tomcat, например:
<Context path="" docBase="path of my-application deployed folder"/>
который должен был установить 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.
Я также попытался воспроизвести проблему, с которой я столкнулся на удаленном сервере, чтобы найти причину и сообщить об этом администратору. Я нахожу пару проблем.
- В фрагменте server.xml, который отправил мне admin, autoDeploy и deployOnStartUp установлены в true, тогда как они должны быть ложными, если явно указывать элемент Context в server.xml. Это приведет к двойному развертыванию, которое создает папку ROOT и папку с именем файла .war. Удаление .war удалит соответствующую папку и распакует приложение, но ROOT останется и должен быть удален вручную и требует перезагрузки Tomcat. До перезапуска любого развертывания ROOT.war не удастся.
- Я понял, что есть некоторые причины, препятствующие развертыванию ROOT.war. Возможно, существует ROOT.xml в conf/{имя-двигателя}/{имя-хоста} или папка ROOT существует в appBase хоста или как я описанное выше, приложение ROOT из предыдущего развертывания не разворачивается и требует перезапуска Tomcat.
В любом случае я не мог точно определить, что именно предотвращает развертывание ROOT.war, поскольку для этого требуется доступ к файлам журнала Tomcat и файлам conf, чтобы проверить случаи, описанные выше.
Также из всего, что я вижу, мой администратор кажется неспособным поддерживать сервер Tomcat и находить проблему. Поэтому я решил пойти с выделенным сервером Tomcat после борьбы с общим.