Развертывание приложения на пользовательском хосте 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.