Jruby/Jrack Tomcat 上的 Sendfile
在将应用程序部署到 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 实例...日志似乎都显示 一切正常。
如果需要更多信息,或者有人对我如何做有任何想法,请告诉我 可以追踪这个问题。
谢谢, -吉姆
I'm having an interesting issue when deploying an app to Tomcat. I'm
using the Acts_as_flying_saucer gem to convert html to PDF. What the
gem/plugin does is render an html view and then uses a java SAX
processor to render a standard PDF/1.4 compliant file in the server's
TMP directory.
The problem I'm having is when the plugin makes the call to send the
file to the browser. It sends a 0 Byte file. Looking at the Rails log,
it DOES say that it sent /tmp/41c986f5e6249ce24c7698b6494796e0.pdf
Tomcat log shows a 200 status as if it sent the file. But the file in
the /tmp/ directory has info in it and the one sent to the browser is
empty.
The best guess I have is that there is something flaky in the send_file
method.
It works great from webrick. I've deployed a WAR on a few different
Tomcat instances on both Linux and Windows... the logs all seem to show
things working fine.
Let me know if more info is needed or if anyone has any ideas on how I
could track down this problem.
Thanks,
-Jim
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看来 Tomcat 不像其他 Web 服务器那样理解“X-Sendfile”。
“修复”是注释掉:
在您的环境/生产中。
希望这对其他人有帮助。
-吉姆
It appears that Tomcat does not understand 'X-Sendfile' the way other web servers do.
The "fix" is to comment out:
in your environments/production.rb
Hope this helps others.
-Jim
您还可以将此中间件添加到您的中间件堆栈中。
https://gist.github.com/958096
You can also add this middleware to your middleware stack.
https://gist.github.com/958096