1

我正在使用 Java 为 Google App Engine 编写应用程序。某个 servlet 产生的响应可能会超过 32 兆字节的限制。在开发服务器上,这似乎不会导致任何问题。在生产服务器上,我需要一种将响应拆分为多个请求的方法。

我想知道超过限制时生产服务器上会发生什么。超过限制时是否PrintWriter抛出?IOException还是只有在 servlet 终止时才抛出异常?理想情况下,我希望能够在附加每个部分之前计算总响应大小(自己不计算字节,因为我不知道 HTTP 标头的大小),以便我可以正确清理结尾响应(即附加“}”以完成 JSON 对象)。或者有没有更好的方法来处理这种情况?

4

1 回答 1

0

尼克说得对,当前响应大小限制为 32MB。

应用程序引擎缓冲响应数据,因此在您的代码完成运行之前它不会看到您的响应,因此它不会引发异常或以其他方式发出代码可以捕获的错误信号。相反,它会向客户端返回一个 500,其正文如下:

HTTP 响应太大:34000134。限制为:33554432。

您可以通过在http://shell.appspot.com/中运行它自己尝试:

print 'x' * 34 * 1000 * 1000

于 2011-07-07T16:55:50.083 回答