1.背景介紹
2.知識剖析
3.常見問題
4.解決方案
5.編碼實戰(zhàn)
6.擴展思考
7.參考文獻
8.更多討論
1.背景介紹
Tomcat服務(wù)器
Tomcat是SUN公司推出的一個優(yōu)秀的Servlet容器,由Apache、Sun 和其他一些公司及個人共同開發(fā)而成。
Tomcat本身完全用java語言編寫。因為Tomcat 技術(shù)先進、性能穩(wěn)定,而且免費,因而深受Java愛好者的喜愛并得到了部分軟件開發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。
特點:
1、提供了可被服務(wù)器加載并執(zhí)行的程序代碼,并服務(wù)于來自客戶端的請求。
2、Servlet不依賴瀏覽器,是允許在服務(wù)器端,所以不管瀏覽器是否支持java,都能請求訪問servlet。
Resin服務(wù)器
Resin是CAUCHO公司的產(chǎn)品,是一個非常流行的application server,對servlet和JSP提供了良好的支持,性能也比較優(yōu)良,resin同樣也采用JAVA語言開發(fā)。
Resin提供了最快的jsp/servlets運行平臺。在java和javascript的支持下,Resin可以為任務(wù)靈活選用合適的開發(fā)語言。
特點:
1、Resin包含了很多可靠的特性,包括服務(wù)器自動重啟、檢測并重啟死鎖的服務(wù)器、管理JVM內(nèi)存以防止內(nèi)存泄露等。
2、Resin可以將多個服務(wù)器作為一個服務(wù)器來對客戶進行響應(yīng),從而增強服務(wù)器的擴展能力。
3、Resin可實現(xiàn)持久和分布的sessions:持久的session能夠在服務(wù)器重啟的時候保持現(xiàn)有的Http會話,分布式的session可以在多個服務(wù)器之間共享Http會話的狀態(tài)。
Jetty服務(wù)器
Jetty是一個開源、基于標(biāo)準(zhǔn)、全功能實現(xiàn)的JAVA服務(wù)器,Jetty也是使用Java語言編寫的,
它的API以一組JAR包的形式發(fā)布。開發(fā)人員可以將Jetty容器實例化成一個對象,可以迅速為一些獨立運行的Java應(yīng)用提供網(wǎng)絡(luò)和web連接。
特點:
1、Jetty嵌入比較便利,它設(shè)計之初就是作為一個優(yōu)秀的組件來設(shè)計的,因此Jetty可以非常容易的嵌入到應(yīng)用程序當(dāng)中而不需要程序為了使用Jetty做修改。
2、Jetty是輕量的web服務(wù)器,一般來說,它的默認(rèn)配置便可以滿足日常大部分需求,
如果要完成較為復(fù)雜的功能,只需修改相關(guān)的xml文件。jetty的嵌入只需少量的代碼就可以做到。
3、Jetty易拓展,有許多非常良好的接口,因此在Jetty的某種實現(xiàn)無法滿足用戶的需要時,用戶可以非常方便地對Jetty的某些實現(xiàn)進行修改,使得Jetty適用于特殊的應(yīng)用程序的需求。
2.知識剖析
Tomcat和Resin的區(qū)別
相同點:他們都是用java編寫的,都是web服務(wù)器,并且支持集群部署。
不同點:
1、速度方面,Resin比Tomcat快2倍以上,不過Tomcat也很快,所以這個差別幾乎感受不到。
2、開關(guān)機制上方面,Resin要比Tomcat好,比如修改了配置文件之后,Resin是會自動重啟的,而Tomcat需要人工手動關(guān)閉并重啟。
3、報錯方面,Tomcat比較詳細(xì),一個小小的錯誤也會用大篇幅來描述,而Resin則相對簡潔明確一些。
Tomcat和Jetty的區(qū)別
相同點:他們同樣是用java編寫,都是一種Servlet引擎,他們都支持標(biāo)準(zhǔn)的servlet規(guī)范和JavaEE的規(guī)范。
不同點:
1、架構(gòu)方面,Jetty的架構(gòu)是基于Handler來實現(xiàn)的,主要的擴展功能都可以用Handler來實現(xiàn),擴展簡單。
Tomcat的架構(gòu)是基于容器設(shè)計的,進行擴展是需要了解Tomcat的整體設(shè)計結(jié)構(gòu),不易擴展。
2、靈活性方面,Jetty更靈活,體現(xiàn)在其可插拔性和可擴展性,更易于開發(fā)者對Jetty本身進行二次開發(fā),定制一個適合自身需求的Web Server。
相比之下,重量級的Tomcat因為本來就支持過多特性,要對其精簡,比對jetty進行拓展都更難。
3、處理性能方面,Tomcat適合處理少數(shù)非常繁忙的鏈接,也就是說鏈接生命周期短的話,Tomcat的總體性能更高。另外,Jetty在處理靜態(tài)資源時,性能優(yōu)于Tomcat。
3.常見問題
在線上服務(wù)應(yīng)該選擇哪一種WEB服務(wù)器?
4.解決方案
這些服務(wù)器各有優(yōu)劣,選擇服務(wù)器時應(yīng)該先參考項目,預(yù)估規(guī)模大小等。比如大規(guī)模的企業(yè)級應(yīng)用,Tomcat自身擴展了大量JEE特性可滿足企業(yè)級應(yīng)用的需求,
所以這種情況下應(yīng)選用Tomcat。
5.編碼實戰(zhàn)
6.擴展思考
7.參考文獻
http://blog.csdn.net/lihua2915/article/details/5997105
8.更多討論
除了這幾種服務(wù)器,還有哪些重要的服務(wù)器?
Jboss,weblogic,apache等。
可否使用nginx對這幾種服務(wù)器設(shè)置均衡負(fù)載配置?
可以,nginx反向代理這幾種服務(wù)器就行了。