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。

參數:
運行異步處理程序

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章