gpt4 book ai didi

java - Servlet - 关闭连接但不关闭方法

转载 作者:太空宇宙 更新时间:2023-11-04 06:35:52 24 4
gpt4 key购买 nike

我必须实现服务(servlet 2.5 或 3),该服务将在每个连接上发送 204 代码,但不会关闭线程。我需要对收到的数据执行一些操作(例如打开新连接)。

可以关闭连接但不能结束方法吗?或者在连接关闭时启动另一个方法?

最佳答案

规范中尚不清楚,但它似乎可以在 Tomcat 7.0 中工作。

摘自 servlet 3.0 规范:

Closure of Response Object
When a response is closed, the container must immediately flush all remaining content in the response buffer to the client. The following events indicate that the servlet has satisfied the request and that the response object is to be closed:

  • The termination of the service method of the servlet.
  • The amount of content specified in the setContentLength method of the response has been greater than zero and has been written to the response.
  • The sendError method is called.
  • The sendRedirect method is called.
  • The complete method on AsyncContext is called.

根据我在 tomcat 7.0.32 上的测试,当 ContentLength 设置为 0 且输出流关闭时,Http 连接会在 servlet 的 service 方法结束之前关闭。

因此,根据您的要求,您可以在 servlet 中尝试以下操作:

response.setStatus(HttpServletResponse.SC_NO_CONTENT);
response.setContentLength(0);
response.getOutputStream().close();
// continue after connection with client is closed

但是注意我在规范中找不到任何确认信息,因此它无法与其他容器一起使用。

关于java - Servlet - 关闭连接但不关闭方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25400355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com