gpt4 book ai didi

jakarta-ee - 超时后的JavaEE 6 AsyncContext行为

转载 作者:行者123 更新时间:2023-12-04 04:12:14 24 4
gpt4 key购买 nike

AsyncContext超时后的确切行为是什么?它是否仍在运行,并使用getResponse()返回响应?

最佳答案

Java Servlet 3.0 维护版本(第34页)显示:

A call to this method - ServletRequest.startAsync(ServletRequest req,
ServletResponse res)
- ensures that the response isn't committed when the application exits out of the service method. It is committed when AsyncContext.complete is called on the returned AsyncContext or the AsyncContext times out and there are no listeners associated to handle the time out. The timer for async time outs will not start until the request and it’s associated response have returned from the container. The AsyncContext could be used to write to the response from the async thread. It can also be used to just notify that the response is not closed and committed.



the javadoc of the javax.servlet.AsyncContext interface:

In the event that an asynchronous operation has timed out, the container must run through these steps:

  1. Invoke, at their onTimeout method, all AsyncListener instances registered with the ServletRequest on which the asynchronous operation was initiated.
  2. If none of the listeners called complete() or any of the dispatch() methods, perform an error dispatch with a status code equal to HttpServletResponse.SC_INTERNAL_SERVER_ERROR.
  3. If no matching error page was found, or the error page did not call complete() or any of the dispatch() methods, call complete()."


上面的最后一行是最重要的-将调用 AsyncContext.complete()The javadoc says:

Completes the asynchronous operation that was started on the request that was used to initialze this AsyncContext, closing the response that was used to initialize this AsyncContext.



关闭 AsyncContext时,对其大多数方法的调用将引发 IllegalStateException

关于jakarta-ee - 超时后的JavaEE 6 AsyncContext行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15447666/

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