Jruby / JRack Tomcat上的Sendfile

时间:2011-05-05 22:09:29

标签: ruby-on-rails tomcat jruby

将应用程序部署到Tomcat时,我遇到了一个有趣的问题。我 使用Acts_as_flying_saucer gem将html转换为PDF。什么的 gem / plugin会渲染一个html视图,然后使用java SAX 处理器在服务器中呈现标准的PDF / 1.4兼容文件 TMP目录。

我遇到的问题是插件发出调用的时间 文件到浏览器。它发送一个0字节文件。看看Rails日志, 它说发了/tmp/41c986f5e6249ce24c7698b6494796e0.pdf

Tomcat日志显示200状态,就像它发送文件一样。但文件中 / tmp /目录中有信息,发送给浏览器的信息是 空。

我最好的猜测是send_file中存在碎片 方法

webrick的效果非常好。我已经在几个不同的部署了WAR Linux和Windows上的Tomcat实例......日志似乎都显示出来了 事情很好。

如果需要更多信息或者是否有人对我如何有任何想法,请告诉我 可以追查这个问题。

谢谢, -Jim

2 个答案:

答案 0 :(得分:3)

似乎Tomcat不像其他Web服务器那样理解'X-Sendfile'。

“修复”是注释掉:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

在您的环境/ production.rb

希望这有助于其他人。

-Jim

答案 1 :(得分:1)

您还可以将此中间件添加到中间件堆栈。

https://gist.github.com/958096