freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

畢業(yè)設(shè)計(jì)(論文)-基于java的web服務(wù)器(文件)

 

【正文】 pService方法中 。 class JspReader int read 。 JspReader 是對(duì) 包中的 PushbackReader和 LineNumberReader 的封裝,具有讀出 read 或回退 unread 單個(gè)字符和字符數(shù)組以及定位當(dāng)前 JSP 文件行數(shù)的功能。 Node addScriptlet 。 class ServletWriter void writePageBegin 。 void writeMainSection 。 SP 生成的 Servlet 只有編譯成 Java 類(lèi)才能夠被 Servlet 容器所調(diào)用。編譯器可供用戶(hù)選擇,當(dāng)前我們提供 javac 和 jikes 兩種編譯器來(lái)編譯 JSP?;娟P(guān)系是 init 調(diào)用 jspInit, destroy 調(diào)用 jspDestroy, service 調(diào)用 _jspService,因此 Servlet容器通過(guò) init、 destroy、 service即可完成對(duì)由 JSP生成的 Servlet的調(diào)用。 JSP 引擎只在第一次請(qǐng)求某 JSP 頁(yè)面時(shí)創(chuàng)建一個(gè)Servlet,以后的請(qǐng)求只是重用第一個(gè)請(qǐng)求所創(chuàng)建的 Servlet。Servlet 容器封裝了這一過(guò)程的細(xì)節(jié),以一個(gè) DMRequest 對(duì)象代表客戶(hù)端的一個(gè)請(qǐng)求,以一個(gè) DMResponse 對(duì)象代表對(duì)客戶(hù)端的一個(gè)響應(yīng)。 DMResponse 內(nèi)部維持一個(gè)字節(jié)緩沖區(qū),用于緩存輸出的內(nèi)容。應(yīng)用程序也可以通過(guò) flushBuffer 方法強(qiáng)制服務(wù)器將緩沖區(qū)中的內(nèi)容輸出到客戶(hù)端。 序上下文 每一個(gè)應(yīng)用程序隸屬于一個(gè)應(yīng)用程序上下文, Servlet 容器按照應(yīng)用程序上下文對(duì)應(yīng)用程序進(jìn)行管理。 DMServletContext 實(shí)例化是在服務(wù)器啟動(dòng)時(shí)由上下文管理器 ContextManager 來(lái)實(shí)現(xiàn)的。 按照 Servlet 規(guī)范,一個(gè) Servlet 具有一定的生命周期,這個(gè)生命周期由jlet 接口的 init, service 和 destroy 方法表達(dá)。當(dāng)客戶(hù)端向服務(wù)器請(qǐng)求某個(gè) Servlet服務(wù)時(shí),容器首先在 Servlet 緩沖池中查找是否有所請(qǐng)求的 Servlet 實(shí)例,如果有,直接取出并調(diào)用該 Servlet的 service方法服務(wù)于客戶(hù)端;如果沒(méi)有,表明該 Servlet是被第一次請(qǐng)求,容器調(diào)用當(dāng)前上下文的 Web 類(lèi)裝載器將請(qǐng)求的 Servlet 類(lèi)裝載進(jìn)內(nèi)存并實(shí)例化。 DMServletConfig 實(shí)現(xiàn)了 ServletConfig接口,它封裝了 Servlet 的一些初始化參數(shù)。如果一個(gè) Servlet 拋出一個(gè)這樣的異常,它將不會(huì)被置入有效服務(wù)并且容器立即將其釋放并向客戶(hù)端返回錯(cuò)誤。因?yàn)镾ervlet 只被創(chuàng)建一次,然后作為不變的實(shí)例一直運(yùn)行,所以在 Servlet 中可以創(chuàng)建持久的變量和對(duì)象。 Servlet API 提供了 SingleThreadModel 接口解決了這個(gè)問(wèn)題。 DM Servlet 容器會(huì)按照最近最少使用算法 Least Recently Used,LRU 定期清理 Servlet 緩沖池中的Servlet,對(duì)于很久未使用的 Servlet,容器調(diào)用它的 destroy 方法并將其移除以便它能夠被垃圾回收。 哈希表存儲(chǔ) Servlet 實(shí)例的類(lèi)名和將該 Servlet 實(shí)例進(jìn)行包裝的CacheObject 的名―值對(duì),有向鏈表存儲(chǔ) Servlet 實(shí)例的類(lèi)名。容器處理 Filter 的生命周期與處理 Servlet 類(lèi)似,這里不再重述。過(guò)濾鏈上的過(guò)濾器執(zhí)行時(shí)具有先后順序,它們按照擊鼓傳花的方式逐個(gè)執(zhí)行。 是否調(diào)用過(guò)濾鏈的 doFilter 方法完全由應(yīng)用程序決定,容器只保證在請(qǐng)求到達(dá)時(shí)激活過(guò)濾鏈上的第一個(gè) Filter。使用JAVA 技術(shù)能夠快速建立可伸縮性的企業(yè)應(yīng)用系統(tǒng)。 本課題在研究 HTTP協(xié)議和 JAVA規(guī)范白皮書(shū)的基礎(chǔ)上,開(kāi)發(fā)出一種基于 JAVA的 DM WAS,本文的研究工作主要體現(xiàn)在下面幾個(gè)方面: JAVA 規(guī)范的 Web 應(yīng)用服務(wù)器,它能夠處理靜態(tài)資源、動(dòng)態(tài) JSP 頁(yè)面、 Servlet 等大部分服務(wù)器端 Web 資源,任何符合 JAVA 規(guī)范的 Web應(yīng)用程序都能夠在 DM WAS 中配置運(yùn)行; ,以支持熱部署和控制 Web 應(yīng)用程序?qū)︻?lèi)和資源文件的訪問(wèn)權(quán)限; ,設(shè)計(jì)并實(shí)現(xiàn)了線程池,并對(duì)運(yùn)行過(guò)程中可能出現(xiàn)的資源不足、內(nèi)存泄露等問(wèn)題給出了解決方法; 準(zhǔn),在服務(wù)器中實(shí)現(xiàn)了數(shù)據(jù)庫(kù)連接緩沖池技 術(shù),對(duì)物理連接和邏輯連接進(jìn)行兩級(jí)緩存,提高數(shù)據(jù)庫(kù)物理連接的利用率,改善連接請(qǐng)求的響應(yīng)性能; ,實(shí)現(xiàn)了基于 HTTP 基本驗(yàn)證和基于表單的身份認(rèn)證以及基于角色的訪問(wèn)控制。本課題就是在這一背景下提出的。 全文總結(jié) JAVA 是 Sun 公司提出的一種新的多層分布式計(jì)算體系結(jié)構(gòu)的技術(shù)框架,是一整套技術(shù)的總稱(chēng),包括建立企業(yè)應(yīng)用系統(tǒng)的各個(gè)方面。 DMFilerChain 對(duì)象通過(guò) Filter 的 doFilter 方法傳給該過(guò)濾鏈上的每個(gè) Filter。 DMFilerChain實(shí)現(xiàn)了 FilerChain 接口,用以表示一個(gè)或多個(gè) Filter 的集合。 Servlet 過(guò)濾器 規(guī)范增加了一個(gè)很重要的新功能― Servlet 過(guò)濾器( Servlet Filter),其主要作用是在客戶(hù)端請(qǐng)求到達(dá)被請(qǐng)求的服務(wù)之前,或者服務(wù)響應(yīng)離開(kāi)服務(wù)器到達(dá)客戶(hù)端之前,根據(jù)需要對(duì)請(qǐng)求或響應(yīng)進(jìn)行預(yù)處理。 CacheObject 對(duì) Servlet 實(shí)例進(jìn)行包裝, CacheObject 由兩 個(gè)變量組成,一個(gè)是代表 Servlet 實(shí)例的對(duì)象變量,一個(gè)是代表每次訪問(wèn)該Servlet 實(shí)例的時(shí)間變量。容器保證在調(diào)用實(shí)現(xiàn)了 SingleThreadModel接口的 Servlet的 service方法時(shí)只會(huì)讓 一個(gè)線程執(zhí)行并且一次性執(zhí)行完,其它相同請(qǐng)求的線程只能等待。這樣就會(huì)帶來(lái)一個(gè)問(wèn)題―線程競(jìng)賽。同樣,如果在執(zhí)行過(guò)程中發(fā)生異常,容器直接向客戶(hù)端返回錯(cuò)誤。 init方法在 Servlet 生命周期過(guò)程中僅被調(diào)用一次。初始化的過(guò)程主要是讀取 Servlet 的配置信息、系統(tǒng)資源(例如 JDBC 連接)以及其它僅僅需要執(zhí)行一次的任務(wù)。 DM Servlet 容器按照 Servlet 的生命周期來(lái)管理容器中的Servlet。它實(shí)例化所有上下文,以及啟動(dòng)特定于每個(gè)上下文的服務(wù),如創(chuàng)建上下文的 Web 類(lèi)裝載器、調(diào)用 XML 組件解析 Web 描述符、創(chuàng)建上下文的安全域、綁定對(duì)應(yīng)于該上下文的命名服務(wù)。 Servlet 的生命周期由 DMServletContext 來(lái)管理。 DMRequest 和 DMResponse 對(duì)象是服務(wù)器通過(guò)被請(qǐng)求的 Servlet 的 service方法暴漏給應(yīng)用程序的。 DMResponse 默認(rèn)的緩沖區(qū)大小為 1024 字節(jié),應(yīng)用程序可根據(jù)需要進(jìn)行調(diào)整,但必須調(diào)整適當(dāng)。 DMRequest封裝了 Socket的輸入流,負(fù)責(zé)讀取并存儲(chǔ) HTTP請(qǐng)求頭和消息體,同時(shí)提供標(biāo)準(zhǔn)接口供應(yīng)用程序訪問(wèn)和修改這些頭 信息。 Servlet 容器主要通過(guò) Servlet 的生命周期來(lái)管理 Servlet,包括初始化、執(zhí)行和銷(xiāo)毀 Servlet。與 jspInit 類(lèi)似, jspDestroy 也只在 Servlet 從 JVM 卸載時(shí)由Servlet 容器通過(guò) destroy 方法調(diào)用。前三個(gè)方法繼承自 HttpServlet,后三個(gè)方法繼承自 HttpJspPage。 JSP 引擎通過(guò)該 JSP 文件所在的應(yīng)用程序上下文獲取當(dāng)前的類(lèi)裝載器,類(lèi)裝載器為 ant 初始化編譯所需的類(lèi)路徑,調(diào)用 ant 進(jìn)行編譯。 void writePageEnd 。 void writeJspServiceBegin 。 Node addText 。 Node addTag 。 void setLineNumber int lineNumber 。 解析 JSP 的過(guò)程實(shí)際上就是對(duì) JSP 源代碼解析后,按照 JSP 規(guī)范組合成一個(gè)Servlet 源文件的過(guò)程。因?yàn)槿绻粋€(gè) JSP 從未改變,如果每次請(qǐng)求該 JSP 時(shí), JSP 引擎均重新解析和編譯該 JSP,不僅浪費(fèi)系統(tǒng)資源,而且延長(zhǎng)了對(duì)客戶(hù)端的響應(yīng)時(shí)間。 上述過(guò)程如圖 所示。當(dāng) Servlet 容器發(fā)現(xiàn)用戶(hù)請(qǐng)求的是一個(gè)JSP 頁(yè)面時(shí),它將該請(qǐng)求交給 JSP 引擎進(jìn)行處理。 對(duì)于線程泄漏問(wèn)題,我們?cè)诠ぷ骶€程中監(jiān)視任務(wù)對(duì)象的運(yùn)行狀況,如果發(fā)生錯(cuò)誤,通過(guò) errorOccur 方法通知線程池進(jìn)行相應(yīng)的處理,從而保證所有的工作線程運(yùn)行正常。所謂線程泄漏,是指當(dāng)從線程池中取出一個(gè)線程以執(zhí)行一項(xiàng)任務(wù),而在任務(wù)完成后該線程卻沒(méi)有返回池中。當(dāng)任務(wù)隊(duì)列已滿(mǎn)時(shí),多余的請(qǐng)求將被服務(wù)器拒絕。如果有多于 Threads 的并發(fā)請(qǐng)求,多余的請(qǐng)求將被任務(wù)隊(duì)列進(jìn)行緩存。資源不足問(wèn)題的本質(zhì)原因就是過(guò) 多創(chuàng)建線程從而消耗包括內(nèi)存和其它系統(tǒng)資源在內(nèi)的大量資源。//丟棄該任務(wù) Task 是一個(gè)接口,它是每個(gè)任務(wù)必須實(shí) 現(xiàn)的接口,線程池只執(zhí)行實(shí)現(xiàn)了該接口的類(lèi),它提供一組方法用來(lái)規(guī)定執(zhí)行任務(wù)的入口、任務(wù)的執(zhí)行狀態(tài)、任務(wù)執(zhí)行完后的收尾工作等,從而保證線程邏輯和應(yīng)用邏輯的分離,工作線程通過(guò)該接口調(diào)度任務(wù)的執(zhí)行。//從任務(wù)隊(duì)列的隊(duì)頭取出任務(wù)執(zhí) //行并從隊(duì)列中刪除該任務(wù) void RemoveTask Task task 。//運(yùn)行工作線程 boolean overtime 。//執(zhí)行指定任務(wù) /*將工作線程返回到池中 */ void returnWorker WorkerThread worker 。 線程池模塊包括線程池、工作線程、任務(wù)隊(duì)列、任務(wù)接口等幾個(gè)部分。在 Java 中,可以使用 wait 、 notify 和 notifyAll 方法向線程發(fā)送信號(hào)。而且,通過(guò)適當(dāng)?shù)卣{(diào)整線程池中的最大線程數(shù)目和最小線程數(shù)目,可以防止系統(tǒng)資源不足問(wèn)題。為了防止資源不足,服務(wù)器應(yīng)對(duì)創(chuàng)建和銷(xiāo)毀線程的次數(shù)進(jìn)行合理的調(diào)整,盡量重用已有的線程。在服務(wù)器應(yīng)用程序中 使用多線程的意思是對(duì)于接收的每一個(gè)請(qǐng)求我們使用一個(gè)單獨(dú)的線程進(jìn)行處理。 顯然單線程的處理機(jī)制無(wú)法滿(mǎn)足我們的需求。 void writeHeaders throws IOException。 void addCookie Cookie cookie 。 class RequestHandler implements LifeCycle,Task void parseRequest InputStream inputstream void execute Request request,Response response RequestHandler 同時(shí)實(shí)現(xiàn)了生命周期接口和 Task 接口,從而可以交給線程池處理。 void accept 。 Server 代表整個(gè)服務(wù)器,它包含服務(wù)器的相關(guān)屬性信息,負(fù)責(zé)服務(wù)器的啟動(dòng)與停止。 String getServerName 。 boolean isStarted 。 圖 Http 連接管理組件流程圖 Http 連接管理組件由 LifeCycle、 Server、 HttpServer、 ConnectionHandler、RequestHandler、 Request、 Response 等類(lèi)和接口以及實(shí)現(xiàn)線程池的相關(guān)類(lèi)組成。 Http 連接管 理組件位于 DM WAS 的最前端,它在服務(wù)器啟動(dòng)過(guò)程中獲取服務(wù)器配
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1