JSP HTTP服務器系統分析
系統分析
通過以上的分析和說明,讀者基本上已經了解如何定制自己所需要的JSP HTTP服務器。但是對這套JSP HTTP服務器體系特性的認識可能還存在一定模糊。這里我們再從以下幾個方面分析該JSP HTTP服務器的特性。
1.穩定性
該JSP HTTP服務器很大程序上借助了java體系的代碼健壯性和穩定性,對異常(Exception)的處理和異步請求的處理都較為合理。程序的穩定性得到一定保障。
提示:雖然java的異常機制有時候用起來可能確實讓人感覺有些繁瑣,但是對系統的穩定性起到的作用是舉足輕重的。
2.擴展性
由于該系統利用java開發,使得該JSP HTTP服務器系統轉移到其他平臺(MS Windows,Linux,Solaris)的工作變得較為簡單。筆者嘗過將該代碼轉移到Solaris 8系統中,只是修改了文件路徑分割符。
對于功能而言,用戶可以任意擴展服務文件類型。擴展用戶特有的JSP語法和命令。使得服務形式更符合用戶使用特征。
提示:當前SUN公司發布的最新jdk版本為1.6.0,支持MS Windows,Linux,Solaris。
3.執行效率的合理性和優化
(1)巧妙地結合了Java體系的Class Loader技術,遵照“先載入,后使用”的原則,真正做到了“一次載入,多次重用”,從而大大較少了磁盤訪問,提高了服務器端的執行效率。
(2)客戶端請求處理的多線程構架,可以支持多客戶端同時訪問JSP HTTP服務器。如果使用線程池(Thread Pool)構建,可以更進一步提高客戶端請求處理的效率。
4.易用性
通過系統介紹我們可以看出,該JSP HTTP服務器系統的設置比較簡單。
(1)系統的設置(例如:服務頁的目錄,默認頁,系統路徑分隔符等)縮減為最簡單化。
(2)自定義的JSP語法也是比較簡單,易于普通用戶使用。只要用戶了解一定的java語法就可以編寫jsp語法,就如同寫java源文件一樣簡單,甚至比寫Java Application要更為簡單。一下是一個簡單的jsp源文件的內容:
5.對原有系統的支持
本系統對CGI的支持也比較靈活,可以擴展為通過多種方式將參數傳遞給CGI進程。這樣可以維持用戶原有的CGI服務體系不變的基礎上進行系統升級。
總結及補充
1.技術點總結
對于開發本JSP HTTP服務器,結合了很多知識,不僅要兼顧舊的標準(例如CGI,HTTP,MIME),而且也要兼顧新的技術(Class Loader,多線程),知識面涉及到很多。筆者認為主要包括如下幾點:
(1)要具備一定的網絡知識。例如對HTTP標準(RFC2680),MIME標準(RFC2046),CGI標準等。
(2)多線程技術,實時處理客戶端請求,合理處理請求的并發。
(3)Java技術,包括進程間通信技術,Class Loader技術,編碼解碼等。
(4)對系統跨平臺要有一定認識和經驗。例如,筆者具有熟練的Windows平臺和Solaris平臺的開發經驗。
(5)善于學習和分析其他類似系統。例如,筆者曾經對HTML,ISAPI,IIS,CGI,PHP,Apache,Tomcat和JSP進行過深入學習和分析。找出各個系統的有缺點,并嘗試出解決方案。
2.不足之處
作為非商業設計,該JSP HTTP服務器體系設計還存在很多不足之處,出于時間的原因,筆者不可能近期對該系統進行完善。筆者認為需要改善的地方主要有:
(1)設計中沒有考慮多語言的情況,雖然Java體系已經可以很方便地支持多語言系統。
(2)對于MIME的考慮不夠完整,本JSP HTTP服務器系統中處理的MIME類型太過有限。
(3)自定義的JSP語法過于簡單,很多硬性定義可能造成用戶使用不方便。例如:對于JSP表達式一行只能存在一個表達式的規定。另外,提供給服務頁的公共函數過于缺乏,可以提供很多功能函數給服務頁面使用,這樣就可以簡化服務頁的代碼編寫。
(4)直接在jsp文件目錄中創建java,class等文件的做法比較危險,容易暴露服務器內容,應該考慮使用cache的構架,將中間文件和源文件隔離開來。
【編輯推薦】