国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

使用異步Servlet擴(kuò)展_AJAX應(yīng)用程序

2019-11-02 14:36:41
字體:
供稿:網(wǎng)友

  作為Web應(yīng)用程序模型的AJAX的出現(xiàn)使服務(wù)器端的面貌發(fā)生了巨大的變化。

  用戶對(duì)著Web頁面填寫表單并單擊提交按鈕轉(zhuǎn)到下一個(gè)鏈接的典型Web使用模式現(xiàn)在正在轉(zhuǎn)變?yōu)楦冗M(jìn)的客戶端JavaScript以及功能更豐富的用戶界面,只要對(duì)表單進(jìn)行操作,比如單擊一個(gè)復(fù)選框、按下一個(gè)鍵或?qū)?u>鼠標(biāo)移到一個(gè)選項(xiàng)卡上,該用戶界面就會(huì)不斷地與服務(wù)器交互。

  考慮一下從客戶端傳輸?shù)椒?wù)器的數(shù)據(jù)量有多大。從可用性的角度來看,用戶在一個(gè)薄客戶端瀏覽器上獲得了富用戶界面,無需安裝任何東西。但是,當(dāng)在服務(wù)器端擴(kuò)展這些應(yīng)用程序時(shí)就要付出代價(jià)了。AJAX應(yīng)用程序的典型容量規(guī)劃數(shù)可能會(huì)是標(biāo)準(zhǔn)Web應(yīng)用程序的3到4倍。

  有人可能會(huì)問:這對(duì)WebLogic Server有何影響?每個(gè)發(fā)送給WebLogic的HTTP請(qǐng)求都要使用一個(gè)執(zhí)行線程。

  根據(jù)AJAX編程的性質(zhì)以及許多短期的請(qǐng)求會(huì)以輪詢的形式不斷發(fā)送的情況,該行為模式可能造成大量客戶端請(qǐng)求不斷沖擊服務(wù)器的局面。多年來,WebLogic都將這一問題考慮在內(nèi),并構(gòu)建了一個(gè)相當(dāng)棒的特性,即FutureRes

豬豬影院[www.aikan.tv/special/zhuzhuyingyuan/]
ponseServlet。該范型構(gòu)建于異步servlet理念的基礎(chǔ)之上。從版本6.1開始,該功能就允許開發(fā)人員提供真正異步的來自服務(wù)器的通知,而無需對(duì)事件進(jìn)行客戶端輪訓(xùn)并在服務(wù)器端使用執(zhí)行線程。在9.x之前,BEA還不急于公開該類。

  如何在現(xiàn)實(shí)中利用該類呢?

  我們來看一個(gè)例子。假定業(yè)務(wù)需求是要構(gòu)建一個(gè)基于Web的應(yīng)用程序,該應(yīng)用程序以近乎實(shí)時(shí)的方式向服務(wù)器發(fā)送數(shù)據(jù)而無需刷新瀏覽器。這樣的應(yīng)用程序可以向服務(wù)器提交一個(gè)需要花很長(zhǎng)時(shí)間處理的請(qǐng)求,而仍然能夠接收到關(guān)于其狀態(tài)的異步事件并監(jiān)聽事件。

  從技術(shù)角度來看,這有許多實(shí)現(xiàn)方法。其中一種方法就是使用一個(gè)與Java Servlet通信的Java Applet來獲得異步信息。這是一種不錯(cuò)的方法,但是對(duì)于用戶來說有些不太方便,因?yàn)樗麄儽仨毾螺d一個(gè)JVM,還要下載一個(gè)applet到瀏覽器。此外,還必須維護(hù)一個(gè)從客戶端到服務(wù)器的持久性套接字連接,以便接收異步消息。

  設(shè)想一下,如果有1000個(gè)用戶使用該applet,那么就有1000個(gè)執(zhí)行線程幾乎是在空等著發(fā)送事件通知到客戶端。當(dāng)然了,還有其它方法,比如從applet或AJAX應(yīng)用程序構(gòu)建輪詢機(jī)制來定期檢查新數(shù)據(jù)。而如果不經(jīng)常接收到數(shù)據(jù),那么輪詢就顯得無用了,而且還浪費(fèi)了服務(wù)器資源,占用了執(zhí)行線程。

  反之,服務(wù)器可以定期輪詢,將事件傳播回客戶端,并維護(hù)套接字線程,而無需使用持久性執(zhí)行線程。這非常類似于Java NIO的運(yùn)行方式。理想情況下,我們都希望構(gòu)建一個(gè)從服務(wù)器“異步”接收事件通知而無需在服務(wù)器端使用持久性執(zhí)行線程的應(yīng)用程序,不管它是一個(gè)applet還是一個(gè)基于AJAX的薄Web應(yīng)用程序。

  頂一下

  此問題的一種解決方案是創(chuàng)建一個(gè)擴(kuò)展FutureResponseServlet類的servlet。瀏覽器建立了到FutureResponseServlet類的單一連接,并在另一個(gè)線程中將它自身注冊(cè)為一個(gè)監(jiān)聽程序。只要在服務(wù)器端接收到一個(gè)事件,線程就向客戶端通知該事件。服務(wù)器與客戶端保持異步,無需使用持久性執(zhí)行線程。該模型可擴(kuò)展用于多個(gè)并發(fā)用戶的情況。

  本文并不打算介紹如何構(gòu)建AJAX應(yīng)用程序。這方面的文章已經(jīng)有很多了。本文的重點(diǎn)在于討論表示層(比如AJAX、applet或者任何前端應(yīng)用程序)的異步處理的重要性。清單1展示了一個(gè)例子。

  清單1

  import java.io.IOException;

  import java.io.PrintWriter;

  import java.util.Date;

  import java.util.Stack;

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 青岛市| 平安县| 内江市| 天津市| 桐庐县| 福贡县| 蓬溪县| 理塘县| 长兴县| 岚皋县| 连江县| 汉川市| 定兴县| 阜阳市| 德州市| 潼南县| 汝阳县| 蒙城县| 高要市| 株洲市| 沭阳县| 博白县| 霍山县| 长葛市| 丰镇市| 濮阳县| 城步| 松原市| 分宜县| 修武县| 东台市| 濮阳市| 旌德县| 喀喇沁旗| 沅陵县| 平顶山市| 区。| 磐石市| 阿坝县| 平和县| 南岸区|