繁体   English   中英

如何从jetty服务器中的java servlet发送大(超过64k)http响应?

[英]How do I send large (over 64k) http responses from a java servlet in a jetty server?

我正在使用Jetty服务器,并且有一个servlet可以产生大于65536字节的大响应。 我尝试了curl,wget和python urllib2来请求servlet的url上的内容,但是所有的截断响应体大小只有65536字节,这使我相信限制在服务器上。 有趣的是,如果我在桌面而不是生产服务器上运行服务器,那么同一个servlet的响应大小似乎没有65536的上限。 有人可以解释为什么会发生这种情况以及我如何解决它并发送更大的回复?

Jetty的响应大小没有限制。

它可以逐字地传输单个HTTP分块编码响应,直到宇宙的热量死亡。

jetty-distribution附带一个演示库(或带有旧版jetty的“测试webapp”),它有几个多兆字节的示例供您测试。

为您的servlet发布一些代码,可能会显示正在发生的事情。

自我回答,这个问题有答案。 来自评论:

发现了这个问题。 我们有一个非常低的空闲超时来读取和写入请求输入流和响应输出流。 因此,大于1个块的响应(在这种情况下为65536个字节),在写入第二个块之前,在写入调用上阻塞的时间长于此低时间。 这就是为什么问题没有在本地机器上发生 - 因为请求是本地的,它没有达到超时。 在我们的例子中,解决方案不是为涉及需要发送大量数据的servlet的请求和响应设置这么低的超时。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM