国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種實現(xiàn)數(shù)據(jù)查詢或導出的方法及系統(tǒng)的制作方法

      文檔序號:10724904閱讀:1107來源:國知局
      一種實現(xiàn)數(shù)據(jù)查詢或導出的方法及系統(tǒng)的制作方法
      【專利摘要】本發(fā)明公開了一種實現(xiàn)數(shù)據(jù)查詢或導出的方法,用于避免查詢或導出請求長時間無響應以及避免WAS服務器線程阻塞,該方法包括:接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求,將查詢請求或導出請求的標識返回給用戶瀏覽器,以使用戶瀏覽器在顯示的等待頁面中插入標識;啟動線程或進程向數(shù)據(jù)庫接口發(fā)送查詢請求或導出請求,接收數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù);接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求,查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。本發(fā)明還公開了實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)。
      【專利說明】
      一種實現(xiàn)數(shù)據(jù)查詢或導出的方法及系統(tǒng)
      技術領域
      [0001]本發(fā)明涉及數(shù)據(jù)庫技術領域,具體涉及一種實現(xiàn)數(shù)據(jù)查詢或導出的方法及系統(tǒng)。
      【背景技術】
      [0002]在一些分析類系統(tǒng)中,往往需要對大數(shù)據(jù)表進行查詢和導出,涉及數(shù)據(jù)量較大。在現(xiàn)有技術中,通常采用同步查詢或導出的方式,用戶通過在瀏覽器點擊查詢或導出按鈕,前端WAS(WebSphere Applicat1n Server ,WebSphere應用服務器)應用戶請求生成查詢或導出請求并通過訪問數(shù)據(jù)庫處理該查詢或導出請求。
      [0003]由于資源的限制以及關系型數(shù)據(jù)庫本身的技術限制,不可避免地會遇到數(shù)據(jù)庫查詢語句執(zhí)行較慢或者導出數(shù)據(jù)量過大,導致無法快速返回查詢和導出結果的情況;另一方面,WAS會監(jiān)視應用戶請求啟動的線程活動,當其檢測到線程處于活動狀態(tài)的時間超過了線程監(jiān)視器閾值所定義的時間時,WAS將在WAS日志中記錄一條警告,指出被掛起線程的名稱及其已處于活動狀態(tài)的時間,當同時掛起的WAS線程數(shù)大于閾值,則報警到監(jiān)控平臺和/或自動重啟該WAS。因此,在現(xiàn)有技術中,存在處理查詢或導出耗時過長,用戶瀏覽器處于長時間沒有響應狀態(tài)以及容易造成WAS線程阻塞,導致線程掛起及線程池溢出的技術問題。

      【發(fā)明內容】

      [0004]有鑒于此,本發(fā)明提供一種實現(xiàn)數(shù)據(jù)查詢或導出的方法及系統(tǒng),以解決現(xiàn)有技術中存在處理查詢或導出耗時過長,用戶瀏覽器處于長時間沒有響應狀態(tài)以及容易造成WAS線程阻塞,導致線程掛起及線程池溢出的技術問題。
      [0005]為解決上述問題,本發(fā)明提供的技術方案如下:
      [0006]—種實現(xiàn)數(shù)據(jù)查詢或導出的方法,所述方法包括:
      [0007]接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,以使所述用戶瀏覽器在顯示的等待頁面中插入所述標識;
      [0008]啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù);
      [0009]接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0010]相應的,所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)運行于WebSphere應用服務器WAS,所述系統(tǒng)包括觸發(fā)模塊、請求管理器以及線程池;
      [0011]所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括:
      [0012]所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求管理器;
      [0013]所述請求管理器生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊;
      [0014]所述觸發(fā)模塊將所述標識返回給所述用戶瀏覽器。
      [0015]相應的,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括:
      [0016]所述請求管理器向所述線程池發(fā)送所述查詢請求或所述導出請求;
      [0017]所述線程池啟動線程執(zhí)行向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù),并通知所述請求管理器已獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0018]相應的,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括:
      [0019]所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求管理器;
      [0020]所述請求管理器查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述線程池獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)t吳塊;
      [0021]所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0022]相應的,所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括觸發(fā)模塊、請求數(shù)據(jù)庫以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS;
      [0023]所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括:
      [0024]所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求數(shù)據(jù)庫;
      [0025]所述請求數(shù)據(jù)庫生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊;
      [0026]所述觸發(fā)模塊將所述標識返回給所述用戶瀏覽器。
      [0027]相應的,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括:
      [0028]所述后臺進程模塊中的生產者進程從所述請求數(shù)據(jù)庫中獲取未處理的所述查詢請求或所述導出請求并放入請求隊列,所述后臺進程模塊中的消費者進程從所述請求隊列中獲取一條所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述請求數(shù)據(jù)庫。
      [0029]相應的,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括:
      [0030]所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求數(shù)據(jù)庫;
      [0031]所述請求數(shù)據(jù)庫查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊;
      [0032]所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0033]相應的,所述方法應用于所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括觸發(fā)模塊、消息中間件以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS;
      [0034]所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括:
      [0035]所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求以及所述查詢請求或所述導出請求的標識;
      [0036]所述觸發(fā)模塊將所述查詢請求或所述導出請求發(fā)送給所述消息中間件中的請求消息隊列,并將所述標識返回給所述用戶瀏覽器。
      [0037]相應的,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括:
      [0038]所述后臺進程模塊監(jiān)聽所述請求消息隊列,當所述請求消息隊列接收到所述查詢請求或所述導出請求后,所述后臺進程中的消息驅動組件從所述請求消息隊列中獲取所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述消息中間件中的返回消息隊列。
      [0039]相應的,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括:
      [0040]所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并查詢所述返回消息隊列是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述返回消息隊列獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù);
      [0041]所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0042]一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)運行于WebSphere應用服務器WAS,所述系統(tǒng)包括:觸發(fā)模塊、請求管理器以及線程池;
      [0043]所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求管理器,將所述請求管理器生成的所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器;
      [0044]所述請求管理器,用于生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊;向所述線程池發(fā)送所述查詢請求或所述導出請求;
      [0045]所述線程池,用于啟動線程執(zhí)行向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù),并通知所述請求管理器已獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù);
      [0046]所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求;
      [0047]所述請求管理器,還用于查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊;
      [0048]所述觸發(fā)模塊,還用于將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0049]—種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括:觸發(fā)模塊、請求數(shù)據(jù)庫以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS,所述后臺進程模塊包括生產者進程以及消費者進程;
      [0050]所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求數(shù)據(jù)庫,將所述請求數(shù)據(jù)庫生成的所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器;
      [0051]所述請求數(shù)據(jù)庫,用于生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)豐吳塊;
      [0052]所述生產者進程,用于從所述請求數(shù)據(jù)庫中獲取未處理的所述查詢請求或所述導出請求并放入請求隊列;
      [0053]所述消費者進程,用于從所述請求隊列中獲取一條所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述請求數(shù)據(jù)庫;
      [0054]所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求數(shù)據(jù)庫;
      [0055]所述請求數(shù)據(jù)庫,還用于查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊;
      [0056]所述觸發(fā)模塊,還用于將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0057]—種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括:觸發(fā)模塊、消息中間件以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS,所述消息中間件包括請求消息隊列以及返回消息隊列;
      [0058]所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求以及所述查詢請求或所述導出請求的標識;將所述查詢請求或所述導出請求發(fā)送給所述請求消息隊列,并將所述標識返回給所述用戶瀏覽器;
      [0059]所述后臺進程模塊,用于監(jiān)聽所述請求消息隊列,當所述請求消息隊列接收到所述查詢請求或所述導出請求后,消息驅動組件從所述請求消息隊列中獲取所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述返回消息隊列;
      [0060]所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并查詢所述返回消息隊列是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述返回消息隊列獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù);將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      [0061]由此可見,本發(fā)明實施例具有如下有益效果:
      [0062]本發(fā)明實施例通過異步方式實現(xiàn)數(shù)據(jù)查詢或導出,在生成查詢請求或導出請求后用戶瀏覽器直接返回等待頁面,而不是一直等待后臺數(shù)據(jù)庫返回查詢或導出結果,此時用戶還可以進行其他操作;啟動線程或進程處理查詢或導出請求,此時WAS不監(jiān)控自己啟動的線程或其他進程,避免出現(xiàn)線程掛起的警告;最后由用戶主動觸發(fā)或采用輪詢的方式查詢請求是否處理完成,根據(jù)狀態(tài)決定返回等待頁面繼續(xù)等待或者展示結果數(shù)據(jù),避免了由于數(shù)據(jù)庫查詢語句執(zhí)行較慢或者導出數(shù)據(jù)量過大導致查詢或導出請求長時間沒有響應。
      【附圖說明】
      [0063]圖1為現(xiàn)有技術中同步查詢或導出的過程示意圖;
      [0064]圖2為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的方法實施例一的流程圖;
      [0065]圖3為本發(fā)明實施例異步查詢或導出的過程示意圖;
      [0066]圖4為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的方法實施例二的示意圖;
      [0067]圖5為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的方法實施例三的示意圖;
      [0068]圖6為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的方法實施例四的示意圖;
      [0069]圖7為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的系統(tǒng)實施例一的示意圖;
      [0070]圖8為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的系統(tǒng)實施例二的示意圖;
      [0071]圖9為本發(fā)明實施例提供的數(shù)據(jù)查詢或導出的系統(tǒng)實施例三的示意圖。
      【具體實施方式】
      [0072]為使本發(fā)明的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結合附圖和【具體實施方式】對本發(fā)明實施例作進一步詳細的說明。
      [0073]在現(xiàn)有技術中通常采用同步查詢或導出的方式,參見圖1所示,同步查詢或導出可以分為三個階段:
      [0074]在第一階段用戶點擊查詢或導出按鈕,用戶瀏覽器頁面生成http(HyperTeXtTransfer Protocol,超文本傳輸協(xié)議)請求發(fā)送給系統(tǒng);在第二階段系統(tǒng)處理http請求,獲取其中的請求參數(shù)生成SQL查詢請求或導出請求,訪問數(shù)據(jù)庫查詢或導出,數(shù)據(jù)庫返回查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是查詢請求,系統(tǒng)封裝查詢結果數(shù)據(jù)返回給用戶瀏覽器頁面展示,如果是導出請求,系統(tǒng)根據(jù)導出結果生成導出文件,返回導出數(shù)據(jù);第三階段用戶瀏覽器頁面獲取查詢結果展示或下載導出數(shù)據(jù)。
      [0075]由于資源的限制以及關系型數(shù)據(jù)庫本身的技術限制,對查詢語句的優(yōu)化能力往往是有限的,無法將查詢語句優(yōu)化到秒級。這樣用戶瀏覽器在第二階段一直處于無響應的等待狀態(tài),無法進行其他處理,如果第二階段處理耗時過長,則用戶瀏覽器處于長時間無響應狀態(tài);另一方面,系統(tǒng)例如WAS服務器會監(jiān)視第二階段響應用戶請求而啟動處理查詢或導出的線程,當檢測到線程處于活動狀態(tài)的時間超過了線程監(jiān)視器閾值所定義的時間(默認為10分鐘)時,應用程序服務器將在WAS日志中記錄一條警告,指出被掛起線程的名稱及其已處于活動狀態(tài)的時間,在實際應用中,例如可以設置WAS日志監(jiān)控規(guī)則為:一個服務器上若同時掛起的WAS線程數(shù)大于25,則報警到監(jiān)控平臺;若同時掛起的WAS線程數(shù)大于70,則報警到監(jiān)控平臺,并自動重啟該服務器。
      [0076]針對以上問題,本發(fā)明實施例提出通過異步查詢或異步導出的方式,將耗費時間較長的長查詢交易轉變成對用戶可見的短交易,避免用戶長時間等待和大量WAS線程阻塞導致服務器重啟的技術問題。
      [0077]參見圖2所示,是本發(fā)明實施例中提供的實現(xiàn)數(shù)據(jù)查詢或導出的方法實施例一,可以包括以下步驟:
      [0078]步驟201:接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求,將查詢請求或導出請求的標識返回給用戶瀏覽器,以使用戶瀏覽器在顯示的等待頁面中插入標識。
      [0079]本發(fā)明實施例可以應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),可以包括觸發(fā)模塊、請求管理器以及線程池,該實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)該可以運行于WebSphere應用服務器WAS,或者實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)可以包括觸發(fā)模塊、請求數(shù)據(jù)庫以及后臺進程模塊,或者實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)也可以包括觸發(fā)模塊、消息中間件以及后臺進程模塊,其中觸發(fā)模塊可以運行于WAS。用戶在用戶瀏覽器通過點擊查詢或導出按鈕向系統(tǒng)發(fā)送查詢或導出的請求參數(shù),例如需要查詢或導出某一時間段內的某種數(shù)據(jù),系統(tǒng)在接收到請求參數(shù)后生成包括SQL(Structured Query Language,結構化查詢語言)查詢語句以及其他請求信息的查詢請求或導出請求,每一個查詢請求或導出請求都對應唯一的標識,該標識會記錄在等待頁面用于刷新頁面時查詢該標識對應的查詢請求或導出請求是否已經處理完成。
      [0080]步驟202:啟動線程或進程向數(shù)據(jù)庫接口發(fā)送查詢請求或導出請求,接收數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0081]可以采用WAS自己啟動線程處理查詢請求或導出請求,或者啟動另外的后臺進程處理查詢請求或導出請求,WAS不監(jiān)測自己啟動的線程,WAS也不會監(jiān)測其他后臺進程,這樣即使處理查詢請求或導出請求的耗時較長,也不會出現(xiàn)WAS線程hung住導致報警以及服務器重啟的問題。
      [0082]步驟203:接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求,查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0083]參見圖3所示,本發(fā)明實施例采用的異步查詢或導出同樣可以分為三個階段:
      [0084]在第一階段用戶點擊查詢或導出按鈕,系統(tǒng)獲取請求參數(shù),生成查詢請求或導出請求,用戶瀏覽器返回等待頁面,等待頁面中插入查詢請求或導出請求的標識;在第二階段系統(tǒng)啟動線程或者后臺進程的方式,處理查詢請求或導出請求,訪問數(shù)據(jù)庫返回查詢結果數(shù)據(jù)或導出數(shù)據(jù);在第三階段用戶輪詢或者主動刷新等待頁面,系統(tǒng)查詢請求處理狀態(tài),如果請求尚未處理完畢,則返回等待頁面,如果請求已處理完畢,頁面展示查詢結果數(shù)據(jù)或者導出數(shù)據(jù)。
      [0085]與現(xiàn)有技術的同步查詢或導出相比,本發(fā)明實施例中異步查詢或導出的三個階段中,第一階段系統(tǒng)生成查詢或導出請求后用戶瀏覽器直接返回等待頁面,而不是等待后臺數(shù)據(jù)庫返回查詢或導出結果,此時用戶還可以進行其他操作;第二階段由系統(tǒng)啟動線程或者后臺進程的方式,處理查詢和導出請求,此時WAS并不監(jiān)控這些啟動的線程或進程,避免出現(xiàn)線程掛起的警告;第三階段由用戶主動觸發(fā)或前端javascript觸發(fā)查詢,系統(tǒng)檢查查詢或導出請求的處理狀態(tài),根據(jù)狀態(tài)決定是返回等待頁面繼續(xù)等待或者返回結果頁面進行結果展示或下載。異步查詢與導出通過以上步驟,避免了由于數(shù)據(jù)庫查詢語句執(zhí)行較慢或者導出數(shù)據(jù)量過大,導致查詢或導出請求長時間沒有響應。
      [0086]參見圖4所示,在本發(fā)明的一些可能的實現(xiàn)方式中,本發(fā)明實施例中提供的實現(xiàn)數(shù)據(jù)查詢或導出的方法可以應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),該系統(tǒng)可以運行于WebSphere應用服務器WAS,該系統(tǒng)可以包括觸發(fā)模塊Act 1n、請求管理器Request Manager以及線程池ThreadPoolExecutor,在本實施例中,實現(xiàn)數(shù)據(jù)查詢或導出的方法可以包括:
      [0087]步驟401:用戶通過用戶瀏覽器點擊查詢或導出按鈕發(fā)送請求參數(shù),觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù)。
      [0088]步驟402:觸發(fā)模塊根據(jù)請求參數(shù)生成查詢請求或導出請求并發(fā)送給請求管理器。
      [0089]步驟403:請求管理器生成查詢請求或導出請求的標識并發(fā)送給觸發(fā)模塊。
      [0090]步驟404:觸發(fā)模塊將查詢請求或導出請求的標識返回給用戶瀏覽器,用戶瀏覽器返回等待頁面,并可以設置刷新時間。
      [0091]步驟405:請求管理器向線程池發(fā)送查詢請求或導出請求。
      [0092]步驟406:調用線程池啟動線程執(zhí)行向數(shù)據(jù)庫接口DataBase Access Object發(fā)送查詢請求或導出請求,由數(shù)據(jù)庫執(zhí)行查詢請求或導出請求;
      [0093]步驟407:在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收查詢結果數(shù)據(jù)或導出數(shù)據(jù),并通知請求管理器已獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。請求管理器可以記錄標識對應的查詢請求或導出請求的狀態(tài),即可以查詢得到是否已經獲得標識對應的查詢請求或導出請求的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0094]步驟408:觸發(fā)模塊接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求。
      [0095]步驟409:觸發(fā)模塊將包括標識的結果查詢請求發(fā)送給請求管理器,請求管理器查詢查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),
      [0096]步驟410:如果獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),則請求管理器從線程池獲取標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0097]步驟411:請求管理器將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)發(fā)送給觸發(fā)模塊。
      [0098]步驟412:觸發(fā)模塊將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0099]本實施例是基于java.util.concurrent包中CallabIe及Future接口實現(xiàn)異步方法調用。用戶點擊查詢后,Act1n生成查詢或導出請求,將請求放入請求管理器(RequestManager),之后用戶瀏覽器頁面將跳轉至等待頁面。請求加入請求管理器后,請求管理器會生成唯一的標識Correlat1n ID,用于唯一標識該請求。該ID會記錄在等待頁面用于刷新。請求管理器調用ThreadPoolExecutor啟動線程執(zhí)行數(shù)據(jù)庫操作,獲得返回結果。用戶刷新等待頁面調用Act1n檢查請求管理器中Correlat1n ID對應的請求是否已經處理完成,如果尚未處理完畢,則跳轉等待頁面,繼續(xù)等待,如果處理完畢,有返回結果,跳轉查詢結果頁面展示查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0100]本實施例實現(xiàn)數(shù)據(jù)查詢或導出的方法,實現(xiàn)簡單,無需調整系統(tǒng)架構;啟動的線程不在WAS線程監(jiān)視器的監(jiān)控范圍內,故即使線程執(zhí)行時間過程,WAS也不會產生預警信息;而由于線程占用WAS進程的資源,如果線程使用資源時沒有及時釋放,容易導致整個應用無法使用,影響代價較大;部分支持集群環(huán)境,在集群環(huán)境下部署實現(xiàn)需依賴于WAS的會話粘性的特性,由于用戶點擊查詢或導出后生成的查詢或導出請求信息是保存在集群中某一臺服務器的內存中,處理完成后用戶需在同一臺服務器才能獲得查詢結果,如果該臺服務器在處理請求的過程中宕機,可能導致請求丟失。
      [0101 ]由此,在本發(fā)明的一些可能的實現(xiàn)方式中,參見圖5所示,本發(fā)明實施例中提供的實現(xiàn)數(shù)據(jù)查詢或導出的方法可以應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),該系統(tǒng)可以包括觸發(fā)模塊Act1n、請求數(shù)據(jù)庫REQ_INF0以及后臺進程模塊,觸發(fā)模塊Act 1n可以運行于WebSphere應用服務器WAS,后臺進程模塊可以采用生產者Producer/消費者Consumer模式,在本實施例中,實現(xiàn)數(shù)據(jù)查詢或導出的方法可以包括:
      [0102]步驟501:用戶通過用戶瀏覽器點擊查詢或導出按鈕發(fā)送請求參數(shù),觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù)。
      [0103]步驟502:觸發(fā)模塊根據(jù)請求參數(shù)生成查詢請求或導出請求并發(fā)送給請求數(shù)據(jù)庫。
      [0104]步驟503:請求數(shù)據(jù)庫生成查詢請求或導出請求的標識并發(fā)送給觸發(fā)模塊。
      [0105]步驟504:觸發(fā)模塊將查詢請求或導出請求的標識返回給用戶瀏覽器,用戶瀏覽器返回等待頁面,并可以設置刷新時間。
      [0106]步驟505:后臺進程模塊中的生產者進程從請求數(shù)據(jù)庫中獲取所有未處理的查詢請求或導出請求。
      [0107]步驟506:生產者進程將查詢請求或導出請求放入請求隊列。
      [0108]步驟507:后臺進程模塊中的消費者進程從請求隊列中獲取一條查詢請求或導出請求。
      [0109]步驟508:消費者進程向數(shù)據(jù)庫接口DataBase Access Object發(fā)送查詢請求或導出請求,由數(shù)據(jù)庫執(zhí)行查詢請求或導出請求。
      [0110]步驟509:消費者進程在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0111]步驟510:將查詢結果數(shù)據(jù)或導出數(shù)據(jù)發(fā)送給請求數(shù)據(jù)庫。
      [0112]步驟511:觸發(fā)模塊接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求。
      [0113]步驟512:觸發(fā)模塊將包括標識的結果查詢請求發(fā)送給請求數(shù)據(jù)庫,請求數(shù)據(jù)庫查詢查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0114]步驟513:如果獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),則將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給觸發(fā)模塊。
      [0115]步驟514:觸發(fā)模塊將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0116]本實施例是采取啟動后臺進程的方式,前端WAS生成查詢或導出請求,保存在請求數(shù)據(jù)庫中,后臺進程模塊從請求數(shù)據(jù)庫中獲得查詢或導出請求,進行處理并將結果保存在請求數(shù)據(jù)庫中。具體的,用戶點擊查詢后,Act1n生成查詢或導出請求,將查詢或導出請求保存在請求數(shù)據(jù)庫中,之后用戶瀏覽器頁面將跳轉至等待頁面。通過請求數(shù)據(jù)庫序列sequence生成唯一的標識Correlat 1n ID,用于唯一標識該請求。該ID會記錄在等待頁面用于刷新,查詢或導出請求一開始處于初始INIT狀態(tài)。后臺進程模塊采用生產者/消費者的多線程設計模式,生產者線程從請求數(shù)據(jù)庫中獲取所有INIT狀態(tài)的請求放入請求隊列LinkedBlockingQueue中,此時請求處于等待WAIT狀態(tài);消費者線程從隊列獲得一個WAIT狀態(tài)請求進行處理,處理完成后在請求數(shù)據(jù)庫中記錄查詢結果數(shù)據(jù)或導出數(shù)據(jù)。用戶刷新等待頁面調用Act 1n查詢請求數(shù)據(jù)庫中Corre Iat 1n ID對應的請求是否已經處理完成,如果尚未處理完畢,則跳轉等待頁面,繼續(xù)等待,如果處理完畢,有返回結果,跳轉查詢結果頁面展示查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0117]本實施例支持集群環(huán)境,集群中多臺WAS服務器生成的查詢與導出請求均保存在請求數(shù)據(jù)庫中,后臺進程模塊通過請求數(shù)據(jù)庫獲取請求進行處理,并將處理結果保存在請求數(shù)據(jù)庫中,WAS服務器根據(jù)Correlat1n ID從數(shù)據(jù)庫中獲得查詢結果數(shù)據(jù)與導出文件的路徑,生成的導出文件建議保存在共享磁盤上,保證集群中多臺WAS服務器均能訪問。同時,故障恢復代價較小,由于后臺進程模塊與前端應用分離,后臺進程故障將不會影響前端應用的正常使用,影響范圍較小。且無需增加中間件,系統(tǒng)架構調整小。但是查詢結果的展現(xiàn)需手動觸發(fā)查詢請求數(shù)據(jù)庫,請求數(shù)據(jù)庫存儲查詢或導出請求及結果,需增加數(shù)據(jù)庫表清理機制。
      [0118]由此,在本發(fā)明的一些可能的實現(xiàn)方式中,參見圖6所示,本發(fā)明實施例中提供的實現(xiàn)數(shù)據(jù)查詢或導出的方法還可以應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),該系統(tǒng)可以包括觸發(fā)模塊、消息中間件以及后臺進程模塊,觸發(fā)模塊可以運行于WebSphere應用服務器WAS,消息中間件中可以包括JMS Queue(Java Messaging Service Queue,Java消息服務隊列),JMS Queue可以包括請求消息隊列以及返回消息隊列。在本實施例中,實現(xiàn)數(shù)據(jù)查詢或導出的方法可以包括:
      [0119]步驟601:用戶通過用戶瀏覽器點擊查詢或導出按鈕發(fā)送請求參數(shù),觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求以及查詢請求或導出請求的標識。
      [0120]步驟602:觸發(fā)模塊將查詢請求或導出請求發(fā)送給消息中間件中的請求消息隊列。
      [0121]步驟603:將查詢請求或導出請求的標識返回給用戶瀏覽器。
      [0122]步驟604:后臺進程模塊監(jiān)聽請求消息隊列,當請求消息隊列接收到查詢請求或導出請求后,后臺進程中的消息驅動組件Message-Driven Bean從請求消息隊列中獲取查詢請求或導出請求。
      [0123]步驟605:消息驅動組件將查詢請求或導出請求發(fā)送給數(shù)據(jù)庫接口 DataBaseAccess Object。
      [0124]步驟606:在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將查詢結果數(shù)據(jù)或導出數(shù)據(jù)發(fā)送給消息中間件中的返回消息隊列。
      [0125]步驟607:觸發(fā)模塊接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求。
      [0126]步驟608:觸發(fā)模塊查詢返回消息隊列是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0127]步驟609:如果獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),則從返回消息隊列獲取標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0128]步驟610:觸發(fā)模塊將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0129]本實施例同樣是采取啟動后臺進程的方案,本實施例采用消息中間件解決進程間通訊問題。具體的,用戶點擊查詢后,Act1n生成查詢或導出請求,將查詢或導出請求發(fā)送至請求消息隊列Request Queue,之后用戶瀏覽器的頁面將跳轉至等待頁面。在發(fā)送查詢或導出請求前,Act 1n會生成唯一的標識Corre Iat 1n ID,用于唯一標識該請求,該ID會記錄在等待頁面用于刷新。后臺進程會監(jiān)聽請求消息隊列Request Queue,一旦接到請求消息,MDB(Message Driven Bean,消息驅動組件)會從請求消息隊列中獲取查詢或導出請求,根據(jù)查詢或導出請求進行處理,包括查詢數(shù)據(jù)庫、生成導出文件等等。查詢或導出請求處理完成后,MDB會生成返回消息,并將返回消息發(fā)送至返回消息隊列Response Queue。返回消息需設置與請求消息一致的Corr elat1n ID。等待頁面調用Act 1n檢查返回消息隊列Response Queue中是否有CorreIat1n ID對應的返回消息,如果沒有返回消息,貝Ij跳轉等待頁面,如果有返回消息,跳轉查詢結果頁面展示查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0130]本實施例支持集群環(huán)境,多臺WAS服務器生成的查詢與導出請求和返回結果均保存在隊列;故障恢復代價較小,由于后臺進程與前端應用分離,后臺進程故障將不會影響前端應用的正常使用,影響范圍較?。豁撁孀詣铀⑿?,自動返回查詢結果并展示,用戶友好性較好;但是增加中間件,對系統(tǒng)架構有較大調整。
      [0131]這樣,本發(fā)明實施例通過異步方式實現(xiàn)數(shù)據(jù)查詢或導出,在生成查詢請求或導出請求后用戶瀏覽器直接返回等待頁面,而不是一直等待后臺數(shù)據(jù)庫返回查詢或導出結果,此時用戶還可以進行其他操作;啟動線程或進程處理查詢或導出請求,此時WAS不監(jiān)控自己啟動的線程或其他進程,避免出現(xiàn)線程掛起的警告;最后由用戶主動觸發(fā)或采用輪詢的方式查詢請求是否處理完成,根據(jù)狀態(tài)決定返回等待頁面繼續(xù)等待或者展示結果數(shù)據(jù),避免了由于數(shù)據(jù)庫查詢語句執(zhí)行較慢或者導出數(shù)據(jù)量過大導致查詢或導出請求長時間沒有響應。
      [0132]參見圖7所示,本發(fā)明實施例中還提供一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)實施例,該系統(tǒng)可以運行于WebSphere應用服務器WAS,該系統(tǒng)可以包括:觸發(fā)模塊701、請求管理器702以及線程池703。
      [0133]其中,觸發(fā)模塊,可以用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求并發(fā)送給請求管理器,將請求管理器生成的查詢請求或導出請求的標識返回給用戶瀏覽器。
      [0134]請求管理器,可以用于生成查詢請求或導出請求的標識并發(fā)送給觸發(fā)模塊;向線程池發(fā)送查詢請求或導出請求。
      [0135]線程池,可以用于啟動線程執(zhí)行向數(shù)據(jù)庫接口發(fā)送查詢請求或導出請求,在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收查詢結果數(shù)據(jù)或導出數(shù)據(jù),并通知請求管理器已獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。
      [0136]觸發(fā)模塊,還可以用于接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求。
      [0137]請求管理器,還可以用于查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給觸發(fā)模塊。
      [0138]觸發(fā)模塊,還可以用于將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0139]本實施例與上述圖4對應的實施例類似,相關說明可以參見上述實施例,在此不再贅述。
      [0140]參見圖8所示,本發(fā)明實施例中還提供一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)實施例,該系統(tǒng)可以包括:觸發(fā)模塊801、請求數(shù)據(jù)庫802以及后臺進程模塊803,觸發(fā)模塊可以運行于WebSphere應用服務器WAS,后臺進程模塊可以包括生產者進程以及消費者進程。
      [0141]其中,觸發(fā)模塊,可以用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求并發(fā)送給請求數(shù)據(jù)庫,將請求數(shù)據(jù)庫生成的查詢請求或導出請求的標識返回給用戶瀏覽器。
      [0142]請求數(shù)據(jù)庫,可以用于生成查詢請求或導出請求的標識并發(fā)送給觸發(fā)模塊。
      [0143]生產者進程,可以用于從請求數(shù)據(jù)庫中獲取未處理的查詢請求或導出請求并放入請求隊列。
      [0144]消費者進程,可以用于從請求隊列中獲取一條查詢請求或導出請求發(fā)送給數(shù)據(jù)庫接口,在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將查詢結果數(shù)據(jù)或導出數(shù)據(jù)發(fā)送給請求數(shù)據(jù)庫。
      [0145]觸發(fā)模塊,還可以用于接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求并發(fā)送給請求數(shù)據(jù)庫。
      [0146]請求數(shù)據(jù)庫,還可以用于查詢查詢是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給觸發(fā)模塊。
      [0147]觸發(fā)模塊,還可以用于將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0148]本實施例與上述圖5對應的實施例類似,相關說明可以參見上述實施例,在此不再贅述。
      [0149]參見圖9所示,本發(fā)明實施例中還提供一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng)實施例,該系統(tǒng)可以包括:觸發(fā)模塊901、消息中間件902以及后臺進程模塊903,觸發(fā)模塊可以運行于WebSphere應用服務器WAS,消息中間件可以包括請求消息隊列以及返回消息隊列。
      [0150]其中,觸發(fā)模塊,可以用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)請求參數(shù)生成查詢請求或導出請求以及查詢請求或導出請求的標識;將查詢請求或導出請求發(fā)送給請求消息隊列,并將標識返回給用戶瀏覽器;
      [0151]后臺進程模塊,可以用于監(jiān)聽請求消息隊列,當請求消息隊列接收到查詢請求或導出請求后,消息驅動組件從請求消息隊列中獲取查詢請求或導出請求發(fā)送給數(shù)據(jù)庫接口,在數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將查詢結果數(shù)據(jù)或導出數(shù)據(jù)發(fā)送給返回消息隊列;
      [0152]觸發(fā)模塊,還可以用于接收用戶瀏覽器發(fā)送的包括標識的結果查詢請求并查詢返回消息隊列是否獲得標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從返回消息隊列獲取標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù);將標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給用戶瀏覽器進行展示。
      [0153]本實施例與上述圖6對應的實施例類似,相關說明可以參見上述實施例,在此不再贅述。
      [0154]這樣,本發(fā)明實施例通過異步方式實現(xiàn)數(shù)據(jù)查詢或導出,在生成查詢請求或導出請求后用戶瀏覽器直接返回等待頁面,而不是一直等待后臺數(shù)據(jù)庫返回查詢或導出結果,此時用戶還可以進行其他操作;啟動線程或進程處理查詢或導出請求,此時WAS不監(jiān)控自己啟動的線程或其他進程,避免出現(xiàn)線程掛起的警告;最后由用戶主動觸發(fā)或采用輪詢的方式查詢請求是否處理完成,根據(jù)狀態(tài)決定返回等待頁面繼續(xù)等待或者展示結果數(shù)據(jù),避免了由于數(shù)據(jù)庫查詢語句執(zhí)行較慢或者導出數(shù)據(jù)量過大導致查詢或導出請求長時間沒有響應。
      [0155]需要說明的是,本說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的系統(tǒng)或裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
      [0156]還需要說明的是,在本文中,諸如第一和第二等之類的關系術語僅僅用來將一個實體或者操作與另一個實體或操作區(qū)分開來,而不一定要求或者暗示這些實體或操作之間存在任何這種實際的關系或者順序。而且,術語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設備中還存在另外的相同要素。
      [0157]結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內存、只讀存儲器(R0M)、電可編程R0M、電可擦除可編程R0M、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內所公知的任意其它形式的存儲介質中。
      [0158]對所公開的實施例的上述說明,使本領域專業(yè)技術人員能夠實現(xiàn)或使用本發(fā)明。對這些實施例的多種修改對本領域的專業(yè)技術人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實施例中實現(xiàn)。因此,本發(fā)明將不會被限制于本文所示的這些實施例,而是要符合與本文所公開的原理和新穎特點相一致的最寬的范圍。
      【主權項】
      1.一種實現(xiàn)數(shù)據(jù)查詢或導出的方法,其特征在于,所述方法包括: 接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,以使所述用戶瀏覽器在顯示的等待頁面中插入所述標識; 啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù); 接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。2.根據(jù)權利要求1所述的方法,其特征在于,所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)運行于WebSphere應用服務器WAS,所述系統(tǒng)包括觸發(fā)模塊、請求管理器以及線程池; 所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括: 所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求管理器; 所述請求管理器生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊; 所述觸發(fā)模塊將所述標識返回給所述用戶瀏覽器。3.根據(jù)權利要求2所述的方法,其特征在于,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括: 所述請求管理器向所述線程池發(fā)送所述查詢請求或所述導出請求; 所述線程池啟動線程執(zhí)行向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù),并通知所述請求管理器已獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)。4.根據(jù)權利要求3所述的方法,其特征在于,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括: 所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求管理器; 所述請求管理器查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述線程池獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊; 所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。5.根據(jù)權利要求1所述的方法,其特征在于,所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括觸發(fā)模塊、請求數(shù)據(jù)庫以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS; 所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括: 所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求數(shù)據(jù)庫; 所述請求數(shù)據(jù)庫生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊; 所述觸發(fā)模塊將所述標識返回給所述用戶瀏覽器。6.根據(jù)權利要求5所述的方法,其特征在于,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括: 所述后臺進程模塊中的生產者進程從所述請求數(shù)據(jù)庫中獲取未處理的所述查詢請求或所述導出請求并放入請求隊列,所述后臺進程模塊中的消費者進程從所述請求隊列中獲取一條所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述請求數(shù)據(jù)庫。7.根據(jù)權利要求6所述的方法,其特征在于,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括: 所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求數(shù)據(jù)庫; 所述請求數(shù)據(jù)庫查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊; 所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。8.根據(jù)權利要求1所述的方法,其特征在于,所述方法應用于所述方法應用于實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),所述系統(tǒng)包括觸發(fā)模塊、消息中間件以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS ; 所述接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求,將所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器,包括: 所述觸發(fā)模塊接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求以及所述查詢請求或所述導出請求的標識; 所述觸發(fā)模塊將所述查詢請求或所述導出請求發(fā)送給所述消息中間件中的請求消息隊列,并將所述標識返回給所述用戶瀏覽器。9.根據(jù)權利要求8所述的方法,其特征在于,所述啟動線程或進程向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,接收所述數(shù)據(jù)庫接口返回的查詢結果數(shù)據(jù)或導出數(shù)據(jù),包括: 所述后臺進程模塊監(jiān)聽所述請求消息隊列,當所述請求消息隊列接收到所述查詢請求或所述導出請求后,所述后臺進程中的消息驅動組件從所述請求消息隊列中獲取所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述消息中間件中的返回消息隊列。10.根據(jù)權利要求9所述的方法,其特征在于,所述接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求,查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示,包括: 所述觸發(fā)模塊接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并查詢所述返回消息隊列是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述返回消息隊列獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù); 所述觸發(fā)模塊將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。11.一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),其特征在于,所述系統(tǒng)運行于WebSphere應用服務器WAS,所述系統(tǒng)包括:觸發(fā)模塊、請求管理器以及線程池; 所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求管理器,將所述請求管理器生成的所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器; 所述請求管理器,用于生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊;向所述線程池發(fā)送所述查詢請求或所述導出請求; 所述線程池,用于啟動線程執(zhí)行向數(shù)據(jù)庫接口發(fā)送所述查詢請求或所述導出請求,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后接收所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù),并通知所述請求管理器已獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù); 所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求; 所述請求管理器,還用于查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊; 所述觸發(fā)模塊,還用于將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。12.—種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),其特征在于,所述系統(tǒng)包括:觸發(fā)模塊、請求數(shù)據(jù)庫以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS,所述后臺進程模塊包括生產者進程以及消費者進程; 所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求并發(fā)送給所述請求數(shù)據(jù)庫,將所述請求數(shù)據(jù)庫生成的所述查詢請求或所述導出請求的標識返回給所述用戶瀏覽器; 所述請求數(shù)據(jù)庫,用于生成所述查詢請求或所述導出請求的標識并發(fā)送給所述觸發(fā)模塊; 所述生產者進程,用于從所述請求數(shù)據(jù)庫中獲取未處理的所述查詢請求或所述導出請求并放入請求隊列; 所述消費者進程,用于從所述請求隊列中獲取一條所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述請求數(shù)據(jù)庫; 所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并發(fā)送給所述請求數(shù)據(jù)庫; 所述請求數(shù)據(jù)庫,還用于查詢所述查詢是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)并發(fā)送給所述觸發(fā)模塊;所述觸發(fā)模塊,還用于將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。13.一種實現(xiàn)數(shù)據(jù)查詢或導出的系統(tǒng),其特征在于,所述系統(tǒng)包括:觸發(fā)模塊、消息中間件以及后臺進程模塊,所述觸發(fā)模塊運行于WebSphere應用服務器WAS,所述消息中間件包括請求消息隊列以及返回消息隊列; 所述觸發(fā)模塊,用于接收用戶瀏覽器發(fā)送的請求參數(shù),根據(jù)所述請求參數(shù)生成查詢請求或導出請求以及所述查詢請求或所述導出請求的標識;將所述查詢請求或所述導出請求發(fā)送給所述請求消息隊列,并將所述標識返回給所述用戶瀏覽器; 所述后臺進程模塊,用于監(jiān)聽所述請求消息隊列,當所述請求消息隊列接收到所述查詢請求或所述導出請求后,消息驅動組件從所述請求消息隊列中獲取所述查詢請求或所述導出請求發(fā)送給數(shù)據(jù)庫接口,在所述數(shù)據(jù)庫接口返回查詢結果數(shù)據(jù)或導出數(shù)據(jù)后將所述查詢結果數(shù)據(jù)或所述導出數(shù)據(jù)發(fā)送給所述返回消息隊列; 所述觸發(fā)模塊,還用于接收所述用戶瀏覽器發(fā)送的包括所述標識的結果查詢請求并查詢所述返回消息隊列是否獲得所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù),如果是,則從所述返回消息隊列獲取所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù);將所述標識對應的查詢結果數(shù)據(jù)或導出數(shù)據(jù)返回給所述用戶瀏覽器進行展示。
      【文檔編號】G06F17/30GK106095775SQ201610349481
      【公開日】2016年11月9日
      【申請日】2016年5月24日
      【發(fā)明人】熊思明
      【申請人】中國銀行股份有限公司
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1