2012-03-08 45 views
2

我试图部署一个Rails应用程序作为WAR使用鸣鸟。我有它运行在Tomcat 6,它似乎运行良好。但是,我的所有PUTDELETE请求都会被403 (Forbidden)拒绝。jruby-rack servlet容器是否支持PUT/DELETE?

从我已经能够收集,默认的Tomcat安装在Debian/Ubuntu有这些方法通过禁用:

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

我试着在我/etc/tomcat6/web.xml但没有骰子将其设置为false。我想知道我是否需要做一些类似Warbler在WAR中包装的jruby-rack servlet容器?如果是这样,我该怎么办呢?

如果没有,为什么Tomcat会拒绝将所有PUT s和DELETE发送到我的Rails应用程序?

回答

1

只是额外的细节,这里是JRuby的机架相关的错误:

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

它看起来像一个修复过程中,在写这篇文章的时间。

+0

看起来这是PATC hed在https://github.com/jruby/jruby-rack/commit/c42ee20e3d15b6c4a8cf316cafcf3bd5410cdfca。尽管如此,还没有机会尝试。 – 2012-05-10 20:27:17

+1

jruby-rack ** 1.1.6 **正在发布修复此回归,或者使用servlet操作模式将作为此案例的解决方法,因此我添加了另一个anwser以防万一有人遇到类似问题。 – kares 2012-05-16 08:29:01

3

我有同样的问题。 我将jruby-rack宝石的版本从1.1.5更改为1.1.4,现在它工作正常。

2

对于像这些问题的记录 - 具体到RackFilter一个随时可以尝试使用servlet操作模式作为一种解决方法,只是删除过滤声明(和映射),并宣布和映射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