成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

4.1、異步請(qǐng)求處理(TODO)

AbnerMing / 2545人閱讀

摘要:本部分示例見(jiàn)這個(gè)項(xiàng)目的分支下的中引進(jìn)了基于異步請(qǐng)求處理的。同時(shí)主容器線程退出釋放并允許處理其他請(qǐng)求。對(duì)的調(diào)用返回,可以被用于異步處理之上的進(jìn)一步控制。

??本部分示例見(jiàn)這個(gè)項(xiàng)目的 mvc 分支下的 AsyncController.java

??Spring MVC 3.2 中引進(jìn)了基于異步請(qǐng)求處理的 Servlet 3。除了返回一個(gè)值,一個(gè)控制器方法現(xiàn)在可以返回一個(gè)java.util.concurrent.Callable并生產(chǎn)來(lái)自 Spring MVC 管理的線程的返回值。同時(shí)主 Servlet 容器線程退出、釋放并允許處理其他請(qǐng)求。Spring MVC 在 TaskExecutor 的幫助下,在一個(gè)獨(dú)立的線程中調(diào)用 Callable,當(dāng) Callable 返回時(shí),請(qǐng)求被發(fā)回 Servlet 容器,使用 Callable 的返回值繼續(xù)執(zhí)行。這里有一個(gè)這樣的控制器方法的例子:

@PostMapping
public Callable processUpload(final MultipartFile file) 
{
    return new Callable() 
    {
        public String call() throws Exception 
        {
            // ...
            return "someView";
        }
    };
}

??這個(gè)控制器方法的另一個(gè)選擇是返回一個(gè)DeferredResult實(shí)例。這種情況下,返回值可以由任何線程產(chǎn)生,比如一個(gè)沒(méi)有被 Spring MVC 管理的線程。比如,結(jié)果可能產(chǎn)生于外部事件的響應(yīng),比如一個(gè) JMS 消息,一個(gè)定時(shí)任務(wù)等。這里有一個(gè)這樣的控制器方法的例子:

@RequestMapping("/quotes")
@ResponseBody
public DeferredResult quotes() 
{
    DeferredResult deferredResult = new DeferredResult();
    // Save the deferredResult somewhere..
    return deferredResult;
}

// In some other thread...
deferredResult.setResult(data);

??如果沒(méi)有任何對(duì) Servlet 3.0 中異步請(qǐng)求處理特性的了解的話,這可能很難理解。去了解一下會(huì)很有幫助。這里列出幾個(gè)這個(gè)機(jī)制的基本事實(shí):

通過(guò)request.startAsync()調(diào)用,一個(gè) ServletRequest 可以被置為異步模式。這么做的主要影響是,Servlet,以及任何 Filter,可以退出,但是響應(yīng)依舊會(huì)保持開(kāi)放來(lái)允許之后完成處理過(guò)程。

對(duì)request.startAsync()的調(diào)用返回 AsyncContext,AsyncContext 可以被用于異步處理之上的進(jìn)一步控制。比如它提供了方法調(diào)度功能,這很像 Servlet API 中的 forward,但是它允許應(yīng)用程序繼續(xù)在 Servlet 容器線程中進(jìn)行請(qǐng)求處理。

ServletRequest 提供對(duì)當(dāng)前 DispatcherType 的訪問(wèn),DispatcherType 可以用于區(qū)別處理初始化請(qǐng)求、異步調(diào)度、forward 和其他調(diào)度器(dispatcher)類(lèi)型。

??有了上面的意識(shí),下面是用于帶有 Callable 的異步請(qǐng)求處理的事件序列:

控制器返回一個(gè) Callable

Spring MVC 開(kāi)始異步處理,并把 Callable 提交給一個(gè) TaskExecutor 用于在一個(gè)多帶帶的線程中處理

DispatcherServlet 和所有的 Filter 退出 Servlet 容器線程,但是響應(yīng)保持打開(kāi)

這個(gè) Callable 產(chǎn)生一個(gè)結(jié)果,Spring MVC 把這個(gè)請(qǐng)求調(diào)回 Servlet 容器繼續(xù)處理

DispatcherServlet 繼續(xù)執(zhí)行,并繼續(xù)處理來(lái)自 Callable 的異步產(chǎn)生的結(jié)果

??DeferredResult 的事件序列很相似,除了它應(yīng)該由應(yīng)用程序從任何線程中來(lái)產(chǎn)生異步結(jié)果:

控制器返回一個(gè) DeferredResult,并把它保存在內(nèi)存中的隊(duì)列或者列表中用于訪問(wèn)

Spring MVC 開(kāi)始異步處理

DispatcherServlet 和所有配置的 Filter 退出請(qǐng)求處理線程,但是響應(yīng)依舊打開(kāi)

應(yīng)用程序設(shè)置來(lái)自一些線程中的 DeferredResult,Spring MVC 把請(qǐng)求調(diào)回 Servlet 容器

DispatcherServlet 再次被調(diào)用,并繼續(xù)處理異步產(chǎn)生的結(jié)果

??要了解更多使用異步請(qǐng)求處理的動(dòng)機(jī)的背景,以及什么時(shí)候或?yàn)槭裁词褂盟?,?qǐng)讀這個(gè)博客文章系列.

因?yàn)樗鶎W(xué)有限,這一部分并沒(méi)有真正完成。這里先占坑,日后再行補(bǔ)充。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/66082.html

相關(guān)文章

  • Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開(kāi)發(fā)教程

    摘要:本文章是藍(lán)圖系列的第一篇教程。是事件驅(qū)動(dòng)的,同時(shí)也是非阻塞的。是一組負(fù)責(zé)分發(fā)和處理事件的線程。注意,我們絕對(duì)不能去阻塞線程,否則事件的處理過(guò)程會(huì)被阻塞,我們的應(yīng)用就失去了響應(yīng)能力。每個(gè)負(fù)責(zé)處理請(qǐng)求并且寫(xiě)入回應(yīng)結(jié)果。 本文章是 Vert.x 藍(lán)圖系列 的第一篇教程。全系列: Vert.x Blueprint 系列教程(一) | 待辦事項(xiàng)服務(wù)開(kāi)發(fā)教程 Vert.x Blueprint 系...

    frank_fun 評(píng)論0 收藏0
  • Vuex、Flux、Redux、Redux-saga、Dva、MobX

    摘要:也就是說(shuō)不應(yīng)該有公開(kāi)的,所有都應(yīng)該是私有的,只能有公開(kāi)的。允許使用方法設(shè)置監(jiān)聽(tīng)函數(shù),一旦發(fā)生變化,就自動(dòng)執(zhí)行這個(gè)函數(shù)。用一個(gè)叫做的純函數(shù)來(lái)處理事件。可以通過(guò)得到當(dāng)前狀態(tài)。在中,同步的表現(xiàn)就是發(fā)出以后,立即算出。 這篇文章試著聊明白這一堆看起來(lái)挺復(fù)雜的東西。在聊之前,大家要始終記得一句話:一切前端概念,都是紙老虎。 不管是Vue,還是 React,都需要管理狀態(tài)(state),比如組件之...

    hiYoHoo 評(píng)論0 收藏0
  • Dart基礎(chǔ)系統(tǒng)學(xué)習(xí)

    摘要:中所有的基礎(chǔ)類(lèi)型類(lèi)等都繼承,默認(rèn)值是,自帶和,而如果是或者的話,那么它只有一個(gè)方法。斷言失敗則程序立刻終止檢查是否為空字符串檢查是否小于等于檢查是否為檢查是否為字符串中,支持類(lèi)型。類(lèi)繼承類(lèi),通過(guò)關(guān)鍵字調(diào)用類(lèi)的構(gòu)造函數(shù)。泛型全面支持泛型。 目錄介紹 01.變量聲明 1.1 var聲明變量 1.2 變量和常量 1.3 dynamic和Object 02.數(shù)據(jù)類(lèi)型 2.1 基本...

    stackvoid 評(píng)論0 收藏0
  • Vue.js@2.6.10更新內(nèi)置錯(cuò)誤處機(jī)制,F(xiàn)undebug同步支持相應(yīng)錯(cuò)誤監(jiān)控

    摘要:摘要的錯(cuò)誤監(jiān)控插件同步支持異步錯(cuò)誤監(jiān)控。此次更新,我們對(duì)的監(jiān)控插件做了相應(yīng)的更新,來(lái)更好地支持使用框架開(kāi)發(fā)的應(yīng)用錯(cuò)誤的監(jiān)控。程序運(yùn)行后,成功捕獲該錯(cuò)誤總結(jié)更新到,對(duì)錯(cuò)誤處理提供了更加強(qiáng)大的支持。 摘要: Fundebug 的 JavaScript 錯(cuò)誤監(jiān)控插件同步支持 Vue.js 異步錯(cuò)誤監(jiān)控。 Vue.js 從誕生至今已經(jīng) 5 年,尤大在今年 2 月份發(fā)布了重大更新,即Vue 2....

    DC_er 評(píng)論0 收藏0
  • AJAX 簡(jiǎn)單講解

    摘要:提供一系列新事件,在中我們一般只應(yīng)用,然后檢查狀態(tài)值再?zèng)Q定下一步操作,提供回調(diào)函數(shù)簡(jiǎn)化了這一步驟,在接收完數(shù)據(jù)的時(shí)候即可觸發(fā)。的事件的回調(diào)函數(shù)的事件參數(shù)有兩個(gè)重要屬性和,用來(lái)計(jì)算百分值。不具備對(duì)象及其事件方法。 AJAX(Asynchronous Javascript And XML:異步JavaScript和XML) AJAX 已經(jīng)是老生常談的話題了,它最早起源于1997年,由 Mi...

    eccozhou 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<