有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我使用的是Jetty服务器,有一个servlet,它可以生成大大超过65536字节的响应。我尝试了curl、wget和pythonURLLIB2在servlet的url处请求内容,但都有一个仅为65536字节的截断响应体大小,这让我相信限制在服务器上。有趣的是,如果我在桌面上运行服务器,而不是在生产服务器上运行,那么对于同一个servlet,响应大小似乎没有65536的上限。有人能解释为什么会发生这种情况,以及我如何解决它并发送更大的响应吗


共 (2) 个答案

  1. # 1 楼答案

    自我回答,使问题有答案。从评论中:

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

  2. # 2 楼答案

    Jetty的响应大小没有限制

    它实际上可以流式传输单个HTTP分块编码的响应,直到宇宙热死

    jetty发行版附带了一个演示库(或jetty旧版本的“test webapp”),其中有几个数兆字节的示例供您测试

    为您的servlet发布一些代码,这可能会揭示发生了什么