Эта проблема сводит с ума, и я надеюсь, что кто-то может указать мне правильное направление.
Я пытаюсь развернуть экземпляр Redmine на сервлете Jetty.Я создал войну, используя Warbler, создал контекст, и, похоже, он развернут.К сожалению, я вижу следующее поведение:
Если я получаю доступ к своему приложению по его настроенному имени хоста /, я вижу список каталогов каталога webapp.
Если я получаю доступ к приложению, отправляя GETзапрос к / braillewizard (имя контекста) с отправленным настроенным именем хоста, приложение запускается.
Если я отправлю запрос в / braillewizard с заголовком Host:, не включенным в список имен хостов, приложение будетне запускается, и я получаю 404.
Так что может показаться, что виртуальный хостинг частично настроен правильно, но что-то не так.Особенно раздражает то, что я отлично работаю в двух других системах, включая ту, в которой работает Redmine, и все работает нормально.
Единственное отличие, которое я могу себе представить, заключается в этомодна система состоит в том, что я настраиваю vhost для полного доменного имени системы, тогда как в других системах хосты находятся на случайных доменах.Не уверен, что это является фактором, но мои попытки избавиться от конфигурации контекста и перейти с приложением в / root по-прежнему требуют GET /root.
Я также telnetting непосредственно кСервер Jetty, так что это не проблема с моим интерфейсным веб-сервером.
Вот моя конфигурация контекста:
<Configure class="org.mortbay.jetty.webapp.WebAppContext">
<Set name="war"><SystemProperty name="jetty.home"/>/webapps/braillewizard.war</Set>
<Set name="contextPath">/</Set>
<Set name="virtualHosts">
<Array type="java.lang.String">
<Item>braillewizard.org</Item>
<Item>www.braillewizard.org</Item>
</Array>
</Set>
</Configure>
И мой web.xml, сгенерированный Warbler:
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>rails.env</param-name>
<param-value>production</param-value>
</context-param>
<context-param>
<param-name>public.root</param-name>
<param-value>/</param-value>
</context-param>
<filter>
<filter-name>RackFilter</filter-name>
<filter-class>org.jruby.rack.RackFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>RackFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.jruby.rack.rails.RailsServletContextListener</listener-class>
</listener>
</web-app>
Если есть что-то еще, что я могу предоставить, пожалуйста, дайте мне знать.Я искал решение в течение нескольких часов и ничего не нашел.
Редактировать: ОК, вот еще несколько деталей.Идея, что / контекст работал, не совсем верно.Скорее, приложение не загружалось, и я почему-то не смог увидеть исключение.Позже были внесены различные изменения, и проблема, похоже, немного изменилась.
Кажется, что / не выполняется какой-либо маршрут, связанный с / в приложении Rails.Скорее, это вызывает список каталогов для папки веб-приложения.Если я обращаюсь к URL в моем приложении напрямую, кроме / конечно, все, кажется, работает хорошо.
Вызов Jetty с -DDEBUG, поскольку аргумент JVM, кажется, указывает, что RackHandler поражен, а затем падает черезк обработчику по умолчанию.Это может показаться совместимым с не работающим обработчиком, но я не уверен, почему я вижу поведение в одной версии этого развертывания, а не в другой.