Развертывание приложения на пользовательском хосте Tomcat
У меня возникли проблемы с развертыванием моего приложения.
Окружающая среда: Ubuntu 10.04, Tomcat 7.02 (установить из архива с сайта tomcat, а не из репозиториев), сервер запускается и останавливается вручную, не используя никаких IDE.
Для первого я создал хост в $CATALINA_HOME/conf/server.xml
:
<Host name="java.dev"
appBase="/home/krasilich/java/"
autoDeploy="true" >
<Alias>www.java.dev</Alias>
</Host>
Затем создайте контекст в $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
:
<Context docBase="siloc/web/" />
И получил ошибку
Указан docBase/home/krasilich/java/siloc/web/внутри hostbase, и будет проигнорирован
Но, если я скопирую manager.xml в $CATALINA_HOME/conf/Catalina/java.dev/
, я могу запустить приложение менеджера.
Если я развожу свое приложение через менеджера - он говорит, что все идет хорошо, но я все еще вижу 404 на java.dev:8080/siloc/
Что касается пользовательского хоста.
Я также попытался развернуть приложение через диспетчер на localhost, и он работает, я вижу свое "Hello Word" на localhost: 8080/siloc/
Но если я изменю текст в моем index.jsp, это не повлияет на интерфейс. Кнопка "Повторить" не помогает мне.
Как я уже говорил, менеджер просто копирует файлы приложений в каталог webapps и не вносит никаких изменений в файлы конфигурации.
Все, что мне нужно, я могу развернуть приложение в любом каталоге в моей файловой системе (на самом деле это будет /home/krasilich/java/
).
И было бы здорово, если бы я мог сделать это на пользовательском хосте, например java.dev
Мне нужен ответ, почему контекст в $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
не работает для меня, и что мне делать, чтобы он был согласован?
Спасибо.
Ответы
Ответ 1
Я смог реплицировать вашу проблему.
Есть два варианта обхода, которые я могу предложить, после того, как вы использовали комбинации appBase
и docBase
. Похоже, что двое не работают вместе.
Вариант 1 - удалить appBase
Удалите appBase
из server.xml
и укажите полный путь к веб-приложению в docBase
в $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
Я предполагаю, что ваше значение будет /home/krasilich/java/siloc/web/siloc
.
Примечание: указание только до родительской папки /home/krasilich/java/siloc/web/
покажет вам список каталогов родительской папки
Вариант 2 - Удалить docBase
В $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
удалите docBase
и сохраните только <Context/>
Tomcat выводит имя webapp siloc
из $CATALINA_HOME/conf/Catalina/java.dev/siloc.xml
и ищет веб-приложение с именем siloc
в appBase.
Это позволяет работать java.dev:8080/siloc/при условии, что вы также измените appBase
в server.xml
на родительскую папку вашего webapp siloc
.
В ответ на то, почему manager
работает, по той же причине - в файле manager.xml нет docBase
Я пытаюсь использовать другие комбинации docBase, но любое значение, которое я даю, вызывает
ПРЕДУПРЕЖДЕНИЕ: DocBase... внутри основной базы приложений был указан и будет проигнорирован
Итак, мой вывод - удалить docBase. Это не очень хорошая идея, поскольку полный путь к родительской папке затем жестко закодирован в server.xml.