AsyncContext的中文Api,谷歌翻译

看完Api,英语我不懂也就算了,汉语我也不懂了?MMP 

 

方法名翻译

void javax.servlet.AsyncContext.addListener(AsyncListener listener)

使用最新的异步循环注册给定的AsyncListener,该异步循环是通过调用其中一个ServletRequest.startAsync方法启动的。

当异步循环成功完成,超时或导致错误时,给定的AsyncListener将收到AsyncEvent。

AsyncListener实例将按添加顺序通知。

参数:
监听要注册的AsyncListener
抛出:
IllegalStateException - 如果在容器启动的调度之后调用此方法,在该调度期间调用了一个ServletRequest.startAsync方法,则返回到容器

void javax.servlet.AsyncContext.addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse)

使用最新的异步循环注册给定的AsyncListener,该异步循环是通过调用其中一个ServletRequest.startAsync方法启动的。
当异步循环成功完成,超时或导致错误时,给定的AsyncListener将收到AsyncEvent。

AsyncListener实例将按添加顺序通知。

给定的ServletRequest和ServletResponse对象将分别通过传递给它的AsyncEvent的getSuppliedRequest和getSuppliedResponse方法提供给给定的AsyncListener。在传递AsyncEvent时,不应分别读取或写入这些对象,因为自从注册了给定的AsyncListener以来可能已经发生了额外的包装,但是可以使用它来释放与它们相关联的任何资源。

参数:
监听要注册的AsyncListener
servletRequest将包含在AsyncEvent中的ServletRequest
servletResponse将包含在AsyncEvent中的ServletResponse
抛出:
IllegalStateException - 如果在容器启动的调度之后调用此方法,在该调度期间调用了一个ServletRequest.startAsync方法,则返回到容器

void javax.servlet.AsyncContext.complete()

完成在用于初始化此AsyncContext的请求上启动的异步操作,关闭用于初始化此AsyncContext的响应。
任何类型为AsyncListener的侦听器都将在其onComplete方法中调用,这些侦听器是为创建此AsyncContext的ServletRequest注册的。

在调用ServletRequest.startAsync()或ServletRequest.startAsync(ServletRequest,ServletResponse)之后,以及在调用此类的某个调度方法之前,随时调用此方法是合法的。 如果在调用startAsync的容器启动的调度返回到容器之前调用此方法,则调用将不会生效(并且AsyncListener.onComplete(AsyncEvent)的任何调用都将被延迟),直到容器启动的调度具有 返回容器。

T javax.servlet.AsyncContext.createListener(Class<T> clazz) throws ServletException

实例化给定的AsyncListener类。

返回的AsyncListener实例可以在通过调用其中一个addListener方法向此AsyncContext注册之前进一步自定义。

给定的AsyncListener类必须定义零参数构造函数,该构造函数用于实例化它。

如果给定的clazz表示托管Bean,则此方法支持资源注入。 有关托管Bean和资源注入的其他详细信息,请参阅Java EE平台和JSR 299规范。

void javax.servlet.AsyncContext.dispatch()


 

将此AsyncContext的请求和响应对象调度到servlet容器。

如果异步循环是使用ServletRequest.startAsync(ServletRequest,ServletResponse)启动的,并且传递的请求是HttpServletRequest的实例,那么分派是由javax.servlet.http.HttpServletRequest.getRequestURI返回的URI。否则,在容器最后一次调度请求时,调度将发送到请求的URI。

以下序列说明了这将如何工作:

 //请求发送到/ url / A.
 AsyncContext ac = request.startAsync();
 ...
 ac.dispatch(); // ASYNC发送到/ url / A.
 
 // FORWARD派遣到/ url / B.
 的getRequestDispatcher( “/ URL / B”)向前(请求,响应)。
 //从FORWARD的目标中启动异步操作
 //派遣
 ac = request.startAsync();
 ...
 ac.dispatch(); // ASYNC发送到/ url / A.
 
 // FORWARD派遣到/ url / B.
 的getRequestDispatcher( “/ URL / B”)向前(请求,响应)。
 //从FORWARD的目标中启动异步操作
 //派遣
 ac = request.startAsync(request,response);
 ...
 ac.dispatch(); // ASYNC发送到/ url / B.
 
在将请求和响应对象传递给将在其上执行调度操作的容器管理线程之后,此方法立即返回。如果在调用startAsync的容器启动的调度返回到容器之前调用此方法,则调度操作将延迟到容器启动的调度返回容器之后。

请求的调度程序类型设置为DispatcherType.ASYNC。与前向调度不同,响应缓冲区和标头不会被重置,即使响应已经提交,调度也是合法的。

对请求和响应的控制被委托给调度目标,并且在调度目标完成执行时将关闭响应,除非调用ServletRequest.startAsync()或ServletRequest.startAsync(ServletRequest,ServletResponse)。

在执行此方法期间可能发生的任何错误或异常必须由容器捕获和处理,如下所示:

在onError方法中调用所有为此AsyncContext创建的ServletRequest注册的AsyncListener实例,并通过AsyncEvent.getThrowable使捕获的Throwable可用。
如果没有任何侦听器调用complete或任何调度方法,请执行状态代码等于HttpServletResponse.SC_INTERNAL_SERVER_ERROR的错误调度,并使上述Throwable可用作RequestDispatcher.ERROR_EXCEPTION请求属性的值。
如果未找到匹配的错误页面,或者错误页面未调用complete或任何调度方法,请调用complete。
每个异步循环最多只能有一个异步调度操作,它是通过调用其中一个ServletRequest.startAsync方法启动的。在同一异步循环中执行其他异步分派操作的任何尝试都将导致IllegalStateException。如果随后在调度请求上调用startAsync,则可以调用任何调度或完整方法。

抛出:
IllegalStateException - 如果已调用其中一个调度方法,并且在生成的调度期间未调用startAsync方法,或者调用了complete
也可以看看:
ServletRequest.getDispatcherType

void javax.servlet.AsyncContext.dispatch(String path)


 

将此AsyncContext的请求和响应对象调度到给定路径。

path参数的解释方式与ServletRequest.getRequestDispatcher(String)中的相同,在ServletContext的范围内,初始化此AsyncContext。

请求的所有与路径相关的查询方法必须反映调度目标,而原始请求URI,上下文路径,路径信息,servlet路径和查询字符串可以从ASYNC_REQUEST_URI,ASYNC_CONTEXT_PATH,ASYNC_PATH_INFO,ASYNC_SERVLET_PATH和ASYNC_QUERY_STRING属性中恢复。请求。即使在重复调度的情况下,这些属性也将始终反映原始路径元素。

每个异步循环最多只能有一个异步调度操作,它是通过调用其中一个ServletRequest.startAsync方法启动的。在同一异步循环中执行其他异步分派操作的任何尝试都将导致IllegalStateException。如果随后在调度请求上调用startAsync,则可以调用任何调度或完整方法。

有关其他详细信息,请参阅dispatch(),包括错误处理。

参数:
path分派目标的路径,作用于从中初始化此AsyncContext的ServletContext
抛出:
IllegalStateException - 如果已调用其中一个调度方法,并且在生成的调度期间未调用startAsync方法,或者调用了complete
也可以看看:
ServletRequest.getDispatcherType

void javax.servlet.AsyncContext.dispatch(ServletContext context, String path)


 

将此AsyncContext的请求和响应对象分派到作用于给定上下文的给定路径。

path参数的解释方式与ServletRequest.getRequestDispatcher(String)中的方式相同,只是它的作用域是给定的上下文。

请求的所有与路径相关的查询方法必须反映调度目标,而原始请求URI,上下文路径,路径信息,servlet路径和查询字符串可以从ASYNC_REQUEST_URI,ASYNC_CONTEXT_PATH,ASYNC_PATH_INFO,ASYNC_SERVLET_PATH和ASYNC_QUERY_STRING属性中恢复。请求。即使在重复调度的情况下,这些属性也将始终反映原始路径元素。

每个异步循环最多只能有一个异步调度操作,它是通过调用其中一个ServletRequest.startAsync方法启动的。在同一异步循环中执行其他异步分派操作的任何尝试都将导致IllegalStateException。如果随后在调度请求上调用startAsync,则可以调用任何调度或完整方法。

有关其他详细信息,请参阅dispatch(),包括错误处理。

参数:
context是调度目标的ServletContext
path调度目标的路径,作用域为给定的ServletContext
抛出:
IllegalStateException - 如果已调用其中一个调度方法,并且在生成的调度期间未调用startAsync方法,或者调用了complete
也可以看看:
ServletRequest.getDispatcherType

boolean javax.servlet.AsyncContext.hasOriginalRequestAndResponse()


 

检查是否使用原始或应用程序包装的请求和响应对象初始化了此AsyncContext。

在请求进入异步模式后,在出站方向调用的过滤器可以使用此信息,以确定在异步操作期间是否需要保留在入站调用期间添加的任何请求和/或响应包装器 ,或可能会被释放。

返回:
如果通过调用ServletRequest.startAsync()使用原始请求和响应对象初始化此AsyncContext,或者通过调用ServletRequest.startAsync(ServletRequest,ServletResponse)初始化它,并且ServletRequest和ServletResponse参数都不携带任何应用程序提供的包装器,则返回true; 否则是假的

void javax.servlet.AsyncContext.start(Runnable run)


 

使容器可能从托管线程池调度线程,以运行指定的Runnable。 容器可以将适当的上下文信息传播到Runnable。

参数:
运行异步处理程序

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值