亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

servlet規范定義的Servlet 生命周期

2019-11-18 12:32:45
字體:
來源:轉載
供稿:網友

  servlet有良好的生存期的定義,包括如何加載、實例化、初始化、處理客戶端請求以及如何被移除。這個生存期由javax.servlet.Servlet接口的init,service和destroy方法表達。
  1、加載和實例化
  容器負責加載和實例化一個servlet。實例化和加載可以發生在引擎啟動的時候,也可以推遲到容器需要該servlet為客戶請求服務的時候。
  首先容器必須先定位servlet類,在必要的情況下,容器使用通常的Java類加載工具加載該servlet,可能是從本機文件系統,也可以是從遠程文件系統甚至其它的網絡服務。容器加載servlet類以后,它會實例化該類的一個實例。需要注重的是可能會實例化多個實例,例如一個servlet類因為有不同的初始參數而有多個定義,或者servlet實現SingleThreadModel而導致容器為之生成一個實例池。
  2、初始化
  servlet加載并實例化后,容器必須在它能夠處理客戶端請求前初始化它。初始化的過程主要是讀取永久的配置信息,昂貴資源(例如JDBC連接)以及其它僅僅需要執行一次的任務。通過調用它的init方法并給它傳遞唯一的一個(每個servlet定義一個)ServletConfig對象完成這個過程。給它傳遞的這個配置對象答應servlet訪問容器的配置信息中的名稱-值對(name-value)初始化參數。這個配置對象同時給servlet提供了訪問實現了ServletContext接口的具體對象的方法,該對象描述了servlet的運行環境。
  2.1初始化的錯誤處理
  在初始化期間,servlet實例可能通過拋出UnavailableException 或者 ServletException異常表明它不能進行有效服務。假如一個servlet拋出一個這樣的異常,它將不會被置入有效服務并且應該被容器立即釋放。在此情況下destroy方法不會被調用因為初始化沒有成功完成。在失敗的實例被釋放后,容器可能在任何時候實例化一個新的實例,對這個規則的唯一例外是假如失敗的servlet拋出的異常是UnavailableException并且該異常指出了最小的無效時間,那么容器就會至少等待該時間指明的時限才會重新試圖創建一個新的實例。
  2.2、工具因素
  當工具(注:根據筆者的理解,這個工具可能是應用服務器的某些檢查工具,通常是驗證應用的合法性和完整性)加載和內省(introspect)一個web應用時,它可能加載和內省該應用中的類,這個行為將觸發那些類的靜態初始方法被執行,因此,開發者不能假定只要當servlet的init方法被調用后它才處于活動容器運行狀態(active container runtime)。作為一個例子,這意味著servlet不能在它的靜態(類)初始化方法被調用時試圖建立數據庫連接或者連接EJB容器。
  3、處理請求
  在servlet被適當地初始化后,容器就可以使用它去處理請求了。每一個請求由ServletRequest類型的對象代表,而servlet使用ServletResponse回應該請求。這些對象被作為service方法的參數傳遞給servlet。在HTTP請求的情況下,容器必須提供代表請求和回應的HttpServletRequest和HttpServletResponse的具體實現。需要注重的是容器可能會創建一個servlet實例并將之放入等待服務的狀態,但是這個實例在它的生存期中可能根本沒有處理過任何請求。
  3.1、多線程問題
  容器可能同時將多個客戶端的請求發送給一個實例的service方法,這也就意味著開發者必須確保編寫的servlet可以處理并發問題。假如開發者想防止這種缺省的行為,那么他可以讓他編寫的servlet實現SingleThreadModel。實現這個類可以保證一次只會有一個線程在執行service方法并且一次性執行完。容器可以通過將請求排隊或者維護一個servlet實例池滿足這一點。假如servlet是分布式應用的一部分,那么,那么容器可能在該應用分布的每個JVM中都維護一個實例池。假如開發者使用synchronized要害字定義service方法(或者是doGet和doPost),容器將排隊處理請求,這是由底層的java運行時系統要求的。我們強烈推薦開發者不要同步service方法或者HTTPServlet的諸如doGet和doPost這樣的服務方法。
  3.2、處理請求中的異常
  servlet在對請求進行服務的時候有可能拋出ServletException或者UnavailableException異常。ServletException表明在處理請求的過程中發生了錯誤容器應該使用合適的方法清除該請求。UnavailableException表明servlet不能對請求進行處理,可能是暫時的,也可能是永久的。假如UnavailableException指明是永久性的,那么容器必須將servlet從服務中移除,調用它的destroy方法并釋放它的實例。假如指明是暫時的,那么容器可以選擇在異常信息里面指明的這個暫時無法服務的時間段里面不向它發送任何請求。在這個時間段里面被被拒絕的請求必須使用SERVICE_UNAVAILABLE (503)返回狀態進行響應并且應該攜帶稍后重試(Retry-After)的響應頭表明不能服務只是暫時的。容器也可以選擇不對暫時性和永久性的不可用進行區分而全部當作永久性的并移除拋出異常的servlet。
  3.3線程安全
  開發者應該注重容器實現的請求和響應對象(注:即容器實現的HttpServletRequest和HttpServletResponese)沒有被保證是線程安全的,這就意味著他們只能在請求處理線程的范圍內被使用,這些對象不能被其它執行線程所引用,因為引用的行為是不確定的。
  4、服務結束
  容器沒有被要求將一個加載的servlet保存多長時間,因此一個servlet實例可能只在容器中存活了幾毫秒,當然也可能是其它更長的任意時間(但是肯定會短于容器的生存期)當容器決定將之移除時(原因可能是保存內存資源或者自己被關閉),那么它必須答應servlet釋放它正在使用的任何資源并保存任何永久狀態(這個過程通過調用destroy方法達到)。容器在能夠調用destroy方法前,它必須答應那些正在service方法中執行的線程執行完或者在服務器定義的一段時間內執行(這個時間段在容器調用destroy之前)。一旦destroy方法被調用,容器就不會再向該實例發送任何請求。假如容器需要再使用該servlet,它必須創建新的實例。destroy方法完成后,容器必須釋放servlet實例以便它能夠被垃圾回收。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
九九热在线精品视频| 色综合色综合久久综合频道88| 欧美日韩一区二区免费在线观看| 欧美片一区二区三区| 久久精品国产2020观看福利| 久久精品中文字幕一区| 亚洲第一福利网| xvideos亚洲| 国产精品久久久av久久久| 中文字幕在线观看亚洲| 欧美精品九九久久| 久久的精品视频| 欧美交受高潮1| 亚洲第一免费网站| 日韩中文理论片| 欧美成人精品一区| 国产日韩精品在线观看| 国产成人免费av| 久久综合久久八八| 在线观看欧美视频| 欧美激情视频网| 亚洲激情视频在线观看| 日韩精品视频三区| 午夜精品蜜臀一区二区三区免费| 在线看日韩av| 色www亚洲国产张柏芝| 国模精品视频一区二区三区| 欧美在线一区二区视频| 亚洲天堂影视av| 亚洲精品福利在线观看| 久久久久国产一区二区三区| 欧美—级高清免费播放| 亚洲美女动态图120秒| 日韩精品在线免费观看视频| 亚洲性生活视频在线观看| 亚洲国产第一页| 国产精品99久久久久久人| 亚洲天堂男人天堂女人天堂| 亚洲精品成人久久久| 96pao国产成视频永久免费| 51午夜精品视频| 国产精品视频一| 国产精品电影在线观看| 国产精品a久久久久久| 国产精品99免视看9| 国产一区在线播放| 欧美日韩国产精品一区二区不卡中文| 精品国产自在精品国产浪潮| 成人妇女淫片aaaa视频| 亚洲色图综合网| 亚洲a一级视频| 亚洲最大福利网| 91亚洲人电影| 久久亚洲精品国产亚洲老地址| 亚洲欧美日韩国产成人| 日韩综合视频在线观看| 亚洲欧美第一页| 高清视频欧美一级| 亚洲综合在线播放| 国产日韩在线亚洲字幕中文| 欧美激情一级欧美精品| 综合激情国产一区| 久久理论片午夜琪琪电影网| 97在线免费视频| 中文精品99久久国产香蕉| 国产精品69av| 性欧美亚洲xxxx乳在线观看| 97久久久久久| 亚洲欧美日韩中文在线| 视频在线观看一区二区| 欧美午夜片欧美片在线观看| 狠狠躁夜夜躁久久躁别揉| 亚洲成人激情小说| 亚洲免费av电影| 国产精品视频一区国模私拍| 亚洲国产精品999| 中文字幕在线看视频国产欧美在线看完整| 日韩成人中文字幕| 亚洲精品99久久久久| 欧美精品电影免费在线观看| 欧美黑人xxx| 国产中文欧美精品| 色www亚洲国产张柏芝| 日本成人黄色片| 日韩久久精品电影| 久久久久久久爱| 日韩中文字幕视频| 国产91热爆ts人妖在线| 欧美一级视频在线观看| 亚洲精品资源在线| 久久精品国产一区| 久久亚洲精品小早川怜子66| 亚洲精品国产精品乱码不99按摩| 欧美在线精品免播放器视频| 国产日产欧美a一级在线| 日韩免费在线观看视频| 2018中文字幕一区二区三区| 欧美激情a∨在线视频播放| 亚洲无线码在线一区观看| 亚洲欧美福利视频| 精品国产一区二区三区久久狼黑人| 国产区精品视频| 91牛牛免费视频| 久久综合久中文字幕青草| 成人性生交大片免费看视频直播| 日本一区二区三区在线播放| 色婷婷av一区二区三区在线观看| 亚洲色图日韩av| 91久久久久久久一区二区| 精品亚洲一区二区三区| 亚洲国产精品久久久久秋霞蜜臀| 大胆欧美人体视频| 91中文字幕一区| 欧美日韩亚洲系列| 亚洲精品国产精品国自产观看浪潮| 国产日产久久高清欧美一区| 亚洲欧美国产日韩天堂区| 久久777国产线看观看精品| 国产精品欧美日韩久久| 日韩在线视频一区| 中文字幕日韩欧美在线视频| 日韩成人在线视频观看| 国产精品久久久久aaaa九色| 国产精品九九久久久久久久| 欧美激情喷水视频| 欧美影院在线播放| 国产成人亚洲综合青青| 国产91精品久久久| 欧美一级电影免费在线观看| 亚洲性日韩精品一区二区| 中文字幕日韩在线观看| 亚洲免费人成在线视频观看| 国产一区红桃视频| 亚洲精品自产拍| 在线日韩日本国产亚洲| 社区色欧美激情 | 国产欧美精品一区二区三区介绍| 国产精品69精品一区二区三区| 97久久精品人人澡人人爽缅北| 欧美激情在线一区| 国产精品成人一区二区| 国产精品永久在线| 麻豆国产va免费精品高清在线| 亚洲色图美腿丝袜| 亚洲第一精品久久忘忧草社区| 欧美裸身视频免费观看| 国产亚洲一区二区在线| 欧美黑人性猛交| 欧美肥老太性生活视频| 欧美精品情趣视频| 97精品一区二区三区| 国产综合在线观看视频| www.亚洲免费视频| 成人免费福利在线| 国产精品最新在线观看| 精品女厕一区二区三区| 亚洲美女动态图120秒| 在线精品视频视频中文字幕| 亚洲电影中文字幕| 91美女福利视频高清| 亚洲一区第一页| 欧美wwwxxxx| 亚洲jizzjizz日本少妇| 亚洲国产小视频|