Jruby/Jrack Tomcat 上的 Sendfile

发布于 2024-11-05 02:20:24 字数 534 浏览 0 评论 0原文

在将应用程序部署到 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

思念绕指尖 2024-11-12 02:20:24

看来 Tomcat 不像其他 Web 服务器那样理解“X-Sendfile”。

“修复”是注释掉:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

在您的环境/生产中。

希望这对其他人有帮助。

-吉姆

It appears that Tomcat does not understand 'X-Sendfile' the way other web servers do.

The "fix" is to comment out:

config.action_dispatch.x_sendfile_header = "X-Sendfile"

in your environments/production.rb

Hope this helps others.

-Jim

不羁少年 2024-11-12 02:20:24

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

https://gist.github.com/958096

You can also add this middleware to your middleware stack.

https://gist.github.com/958096

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文