2012-03-08 7 views
2

Я пытаюсь развернуть приложение Rails в качестве WAR с помощью Warbler. У меня он работает в Tomcat 6, и, похоже, он работает нормально. Однако все мои запросы PUT и DELETE отклоняются с помощью 403 (Forbidden).Поддерживает ли контейнер сервлетов jruby-стойки PUT/DELETE?

Из того, что я был в состоянии собрать, по умолчанию Tomcat установить на Debian/Ubuntu отключил с помощью этих методов:

<init-param> 
    <param-name>readonly</param-name> 
    <param-value>true</param-value> 
</init-param> 

Я попытался установить это false в моих /etc/tomcat6/web.xml, но без костей. Интересно, нужно ли мне что-то делать с контейнером сервлетов jruby-rack, упакованным Warbler в моей WAR? Если да, то как я могу это сделать?

Если нет, то почему Tomcat отклонил все PUT и DELETE s, отправленные в мое приложение Rails?

ответ

1

Просто для дополнительных деталей, вот соответствующая ошибка на JRuby-стойке:

https://github.com/jruby/jruby-rack/issues/105

Это выглядит как исправить в ходе работы на момент написания этой статьи.

+0

Похоже, это было ПАТС hed в https://github.com/jruby/jruby-rack/commit/c42ee20e3d15b6c4a8cf316cafcf3bd5410cdfca. Однако у меня не было возможности попробовать это. –

+1

jruby-rack ** 1.1.6 ** освобождается, фиксируя эту регрессию, иначе использование режима работы сервлета будет работать как обходной путь для этого случая, таким образом, я добавил другого пользователя на случай, если кто-то столкнется с подобной проблемой. – kares

3

У меня была та же проблема. Я изменил версию jruby-rack gem с 1.1.5 до 1.1.4, и теперь он отлично работает.

2

для записи на такие вопросы, как эти - специфичные для RackFilter, всегда можно попытаться использовать режим работы сервлета в качестве обходного пути, просто удалить объявление фильтра (и отображение) и декларируют и отображающих RackServlet:

<!-- 
<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>--> 

<servlet> 
    <servlet-name>RackServlet</servlet-name> 
    <servlet-class>org.jruby.rack.RackServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>RackServlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
</servlet-mapping> 

в случае, если вы используете камышевки скопировать web.xml.erb в ваш конфигурации каталог:

cp [GEM_HOME]/gems/warbler-1.3.4/web.xml.erb config