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

时间:2013-12-11 19:22:37

标签: java servlets jetty

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

2 个答案:

答案 0 :(得分:0)

Jetty的回复大小没有限制。

它可以直接传输单个HTTP分块编码响应,直到宇宙死亡。

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

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

答案 1 :(得分:0)

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

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