Конфигурация виртуального хоста Tomcat не работает для действий Struts

Первоначально у меня было нормально работающее веб-приложение под названием «admin», развернутое в каталоге $ CATALINA_HOME/webapps/ tomcat 6. Теперь я попытался настроить виртуальный хост для запуска этого веб-приложения.

Шаг 1: я добавил следующее в $CATALINA_HOME/conf/server.xml

<Host name="mysubdomain.domain.com" appBase="keshav">

</Host>

Шаг 2: я создал папку $CATALINA_HOME/keshav.

Шаг 3: Создал контекст ROOT как $CATALINA_HOME/keshav/ROOT

Шаг 4. Мое веб-приложение «admin» (которое находилось внутри $CATALINA_HOME/webapps/) перемещено в $CATALINA_HOME/keshav.

Теперь, когда я захожу на http://mysudomain.domain.com/admin/jsp/login.jsp, он отлично РАБОТАЕТ, открывая страницу входа. Но когда я пытаюсь получить доступ к http://mysubdomain.domain.com/admin/Login.do или любое другое действие struts выдает мне ошибку 404-

«Статус HTTP 404 — действие сервлета недоступно»

В файле catalina.out я получаю сообщение «ИНФОРМАЦИЯ: действие сервлета в настоящее время недоступно»

Может ли кто-нибудь помочь мне понять, что не так в этой конфигурации?

ОБНОВЛЕНИЕ: я также изменил порт соединителя с 8080 на 80. Поскольку для открытия порта 80 требуются привилегии root, я запускаю tomcat с помощью sudo (пользователь, которого я использую, находится в списке sudoers).

Всякий раз, когда я запускаю tomcat с помощью sudo, возникает ошибка 404 для действий struts. Если я изменю порт соединителя с 80 на 8080 и начну без использования sudo, виртуальный хост будет работать нормально.

Если я использую su для рутирования и запускаю tomcat, он также работает нормально. Использование sudo, похоже, вызывает эту проблему.


person Keshav    schedule 26.09.2009    source источник


Ответы (2)


Это типично для ActionServlet. Он сопоставляет все исключения с UnavailableException, поэтому вы всегда получаете «недоступную» ошибку, даже если сервлет мертв. В журнале должна быть другая информация, чтобы показать вам точную причину.

Когда вы запускаете сервер в sudo, среда меняется. Может быть, конфигурация Struts зависит от какой-то переменной среды или рабочего каталога по умолчанию?

Попробуйте "sudo -s catalina.sh". Это может помочь.

person ZZ Coder    schedule 26.09.2009

  1. Вы определили контекст для своего виртуального хоста? Взгляните на раздел Настройка вашего контекста в Tomcat. руководство по виртуальному хостингу.
  2. ROOT-контекст не требуется (если только вы его не используете).
  3. Сопоставлен ли сервлет «действие» с шаблоном «*.do» в вашем web.xml? Я предполагаю, что это так, поскольку вы сказали, что все работает нормально, но проверить никогда не помешает.
person ChssPly76    schedule 26.09.2009
comment
Спасибо chssply76 за ваш ответ. 1) Нет, я думаю, что отдельный context.xml не требуется для моего веб-приложения администратора, достаточно значения по умолчанию в $CATALINA_HOME/conf 2) Да, ROOT не требуется, но я использую его для перенаправления в веб-приложение администратора 3) да. Пожалуйста, проверьте мое последнее обновление .. - Кешав - person Keshav; 26.09.2009
comment
Итак, JSP работает даже на порту 80 с помощью sudo, но действие не работает? Вы УВЕРЕНЫ, что рабочий JSP на самом деле взят с вашего виртуального хоста, а не является артефактом предыдущего запуска (например, скомпилированный в кэше или из невиртуального приложения)? Запуск sudo может (и обычно изменяет) вашу среду, запустите «sudo -V», чтобы увидеть особенности. Возможно, с classpath происходит что-то странное ... Попробуйте запустить Tomcat через sudo, пока порт остается на 8080 - это должно помочь сузить его до проблемы sudo и порта. Обязательно запустите Tomcat чистым (ничего в work/tmp; веб-приложение развернуто в одном месте). - person ChssPly76; 26.09.2009