【问题标题】:Jetty server is dropping request originated from same port from client machine. Client times outJetty 服务器正在丢弃来自客户端机器相同端口的请求。客户端超时
【发布时间】:2011-12-14 04:40:37
【问题描述】:

我使用 Jetty7 作为 REST 服务器。通过处理 REST 请求,我支持来自 Win7 客户端的 webdav 连接。我的问题是这样的:

  • (1) 如果我双击一个文件,客户端会发送一个文件的 GET 请求。当在wireshark中捕获时,它显示请求来自客户端的54456端口到正在运行jetty的服务器端口80。

  • (2) 请求到达我的 REST 处理程序以获取 GET,然后我构建响应如下:

ResponseBuilder 构建器 = javax.ws.rs.core.Response.ok();
builder.header("Keep-Alive", "timeout=15, max=99");
builder.header("Connection", "Keep-Alive");
builder.header("Cache-Control", "no-store");
builder.header("接受范围", "字节");
builder.header("Last-Modified", new Rfc1123DateFormat().format(new Date(lastModified)));
builder.header("内容长度", fileLength);
InputStream in = new BufferedInputStream(in); //'in' 是 InputStream,我从其他模块获得并拥有文件 内容。
return builder.entity(in).build();

这里,'in' 是 BufferedInputStream,其中包含被询问的文件。

  • (3) 文件在客户端计算机上打开。但是在我的数据包跟踪中,响应标头不包含以下条目:Connection: Keep-Alive...Strange!!!

  • (4)然后我从客户端双击了一个文件夹。这向服务器发送了 PROPFIND 请求。该请求再次来自客户端的端口 54456。我还在服务器上放置了一个数据包捕获。服务器上的跟踪确认 PROPFIND 请求从端口号 54456 到达服务器......但我的处理程序从未被调用。最终,客户一直在等待和超时。之后,客户端再次尝试或显示找不到路径的错误。

  • (5) 但是如果 PROPFIND 请求来自任何其他端口(之前的 GET 请求来自该端口),则码头服务器会处理它并调用我的处理程序...

  • (6) 另一个观察:如果来自客户端的调用序列是这样的:第一个客户端从客户端的端口发送一个 PROPFIND,比如 54400,服务器响应。然后再次从同一个端口 PROPFIND,然后码头也处理它。但只有一个 GET 后跟一些其他请求导致码头没有响应。

我尝试在 Jetty.xml 文件中增加/减少 maxIdleTimeOut,但没有任何帮助。 我想知道是否可以让码头处理这些请求......通过我所在地区的一些代码更改或一些配置更改。或者如果你能看到我做的一些错误的编码......

谢谢, 阿尼尔。

【问题讨论】:

    标签: http get jetty port webdav


    【解决方案1】:

    在对代码进行少量更改后,我找到了解决问题的方法。我改变了 GET 处理程序的实现方式。现在我在函数参数中接受 HttpServletResponse 并从中获取 OutPutStream 。然后继续从“输入”对象(即输入流)读取数据并写入将直接写入客户端响应的 OutPutStream 对象。当然,在写流之前,我必须设置 HttpServletResponse 对象的头部。

    而且,我删除了 ResponseBuilder 对象的使用。即我完全删除了构建器对象的使用(这是在我上面的问题中写的)并切换到 HttpServletResponse 对象...

    通过这样做,看起来码头不会长时间保持连接,并且来自客户端同一端口的下一个后续请求被接受并提供给我的处理程序。

    【讨论】:

      猜你喜欢
      • 2018-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-25
      • 2017-06-18
      相关资源
      最近更新 更多