jruby-rack servlet容器是否支持PUT / DELETE?

时间:2012-03-08 20:33:35

标签: tomcat jrubyonrails warbler jruby-rack

我正在尝试使用Warbler将Rails应用程序部署为WAR。我让它在Tomcat 6中运行,它似乎运行正常。但是,我的所有PUTDELETE请求都被403 (Forbidden)拒绝了。

从我能够收集的内容来看,Debian / Ubuntu上的默认Tomcat安装通过以下方式禁用了这些方法:

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

我已经尝试将此设置为false /etc/tomcat6/web.xml,但没有骰子。我想知道我是否必须做一些类似于Warbler在我的WAR中打包的jruby-rack servlet容器?如果是这样,我将如何解决这个问题?

如果没有,为什么Tomcat会拒绝发送到我的Rails应用程序的所有PUTDELETE

3 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。 我将jruby-rack gem的版本从1.1.5更改为1.1.4,现在工作正常。

答案 1 :(得分:2)

对于像这些问题的记录 - 特定于RackFilter,可以尝试使用servlet操作模式作为解决方法,只需删除过滤器声明(和映射)并声明和映射{{1} }:

RackServlet

如果您使用warbler将 web.xml.erb 复制到 config 目录中:

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

答案 2 :(得分:1)

只是为了更多细节,这里是jruby-rack上的相关错误:

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

在撰写本文时,看起来似乎正在进行修复。