WEB Server
例如:nginx,Apache,IIS等。
Web服務器的主要職責是服務靜態頁面,例如,以HTTP協議傳輸的HTML頁面。
一個簡單的應用場景:用戶在瀏覽器(客戶端)輸入URL並且開始瀏覽網頁。那么服務器所做的就是發送一個靜態頁面到客戶端,傳輸的信息是通過指定了請求和響應格式的HTTP協議。如下圖所示:
Servlet Container
Servlet容器唯一的職責就是通過執行服務器上的JSP和Servlet來產生HTML頁面。那么Servlet容器本質上是Web服務器的一部分,只不過加上了和Sevlet交互的接口。
Servlet是定義在javax.servlet包下面的接口。對於一個Servlet的生命周期,它聲明了三種內在的方法——init(),servie()和destroy()。在服務器上每一個Servlet被喚醒的時候,他們都會執行。servlet容器是如何處理請求的呢,如下所示:
Application Server
應用服務的主要職責就是通過執行服務器代碼產生動態頁面,列如,JSP,Servlet或者EJB。應用服務器的主要任務是服務動態內容,管理EJB Pool,促進事務分配,促進應用查找JNDI,應用安全等等。應用服務器支持整個JavaEE體系。一個應用服務器通常包括一個Web服務器,但是額外加了很多特性。最重要的就是它管理對象(Servlets,EJB,JMS)。
以下是幾種常見的web服務器
一、Tomcat
目前最為流行的Tomcat服務器是Apache-Jarkarta開源項目中的一個子項目,由Apache、Sun 和其他一些公司及個人共同開發而成,是一個小型、輕量級的支持JSP和Servlet 技術的Web服務器。由於有了Sun的參與和支持,最新的Servlet和JSP規范總是能在Tomcat中得到體現。因為Tomcat技術先進、性能穩定,而且免費,因而深受Java愛好者的喜愛並得到了部分軟件開發商的認可,成為目前比較流行的Web應用服務器。
但Tomcat不完全是一個應用服務器,它只是一個Servlet引擎或者是一個Web容器或者是我們眾所周知的Servlet容器,因為它只提供了Servlet和JSP的運行環境,但是沒有提供像是EJB和事務控制的部分,而這部分才是J2EE領域里面應用服務器的特點。
優點:
1、運行時占用的系統資源小,擴展性好,支持負載平衡與郵件服務等開發應用系統常用的功能,而且它還在不斷的改進和完善中,任何一個感興趣的程序員都可以更改它或在其中加入新的功能。
2、Tomcat是一個小型的輕量級應用服務器,在中小型系統和並發訪問用戶不是很多的場合下被普遍使用,是開發和調試JSP程序的首選。
二、weblogic
WebLogic是BEA公司的產品,它是用純java開發的。可進一步細分為 WebLogic Server、WebLogic Enterprise 和 WebLogic Portal 等系列,其中WebLogic Server的功能特別強大。WebLogic是用於開發、集成、部署和管理大型分布式Web應用、網絡應用和數據庫應用的Java應用服務器,它還擁有處理關鍵Web應用系統問題所需的性能 、可擴展性和高可用性,WebLogic Server完全實現了Sun Microsystems Java EE 5.0規范,此外它將Java的動態功能和Java Enterprise標准的安全性引入大型網絡應用的開發、集成、部署和管理之中。由於WebLogic支持企業級的、多層次的和完全分布式的Web應用,並且服務器的配置簡單、界面友好,所以對於那些正在尋求能夠提供Java平台所擁有的一切應用服務器的用戶來說,WebLogic是一個十分理想的選擇。現BEA已被Oracle收購。
三、webSphere
WebSphere是IBM公司重量級的商業應用J2EE平台服務器(Server),可進一步細分為WebSphere Performance Pack、Cache Manager和WebSphere Application Server等系列,其中WebSphere Application Server是基於Java的應用環境,可以運行於Sun Solaris、Windows NT 等多種操作系統平台,用於建立、部署和管理Internet和Intranet Web應用程序。它包含了編寫、運行和監視全天候的工業強度的隨需應變的Web應用程序和跨平台、跨產品解決方案所需要的整個中間件基礎設施。如服務器、服務和工具。WebSphere提供了可靠、靈活和健壯的集成軟件。
與weblogic類似,都提供更安全,穩定的,可以進行大量操作的服務平台,自身帶有的特色功能也比較多。與weblogic相比,由於是不同公司的產品,提供的平台功能差不多,但基於這兩個平台開發的開發環境不同,自帶的java包也不同,基於weblogic或websphere開發的web應用程序基本不能互用。
四、JBoss
JBoss是一個種遵從JavaEE規范的、開放源代碼的、純Java的EJB服務器,對於J2EE有很好的支持,支持EJB 1.1、EJB 2.0和EJB3.0的規范。JBoss采用JML API實現軟件模塊的集成與管理,其核心服務又是提供EJB服務器,不包含Servlet和JSP的Web容器,不過它可以和Tomcat完美結合。
在J2EE應用服務器領域,Jboss是發展最為迅速的應用服務器。由於Jboss遵循商業友好的LGPL授權分發,你可以在任何商業應用中免費使用它,而不用支付費用,並且由開源社區開發,這使得Jboss廣為流行。另外,Jboss應用服務器還具有許多優秀的特質。
其一,它將具有革命性的JMX微內核服務作為其總線結構;
其二,它本身就是面向服務的架構(Service-Oriented Architecture,SOA);
其三,它還具有統一的類裝載器,從而能夠實現應用的熱部署和熱卸載能力。因此,它是高度模塊化的和松耦合的。Jboss用戶的積極反饋,Jboss應用服務器是健壯的、高質量的,而且還具有良好的性能。為滿足企業級市場日益增長的需求,Jboss公司從2003年開始就推出了24*7、專業級產品支持服務。同時,為拓展Jboss的企業級市場,Jboss公司還簽訂了許多渠道合作伙伴。比如,Jboss公司同HP、Novell、Computer Associates、Unisys等都是合作伙伴。2006年,Jboss公司被Redhat公司收購。
五、Apache
Apache源於NCSAhttpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache是自由軟件,所以不斷有人來為它開發新的功能、新的特性、修改原來的缺陷。
Apache的特點是簡單、速度快、性能穩定,並可做代理服務器來使用。
Apache是以進程為基礎的結構,進程要比線程消耗更多的系統開支,不太適合於多處理器環境,因此,在一個Apache Web站點擴容時,通常是增加服務器或擴充群集節點而不是增加處理器。
到目前為止Apache仍然是世界上用的最多的Web服務器,世界上很多著名的網站都是Apache的產物,它的成功之處主要在於它的源代碼開放、有一支開放的開發隊伍、支持跨平台的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平台上)以及它的可移植性等方面。
六、IIS
Microsoft的Web服務器產品為Internet Information Server (IIS), IIS是允許在公共Internet上發布信息的Web服務器。IIS是目前最流行的Web服務器產品之一,很多著名的網站都是建立在IIS的平台上。IIS提供了一個圖形界面的管理工具,稱為Internet服務管理器,可用於監視配置和控制Internet服務。IIS是一種Web服務組件,其中包括Web服務器、FTP服務器、NNTP服務器和SMTP服務器,分別用於網頁瀏覽、文件傳輸、新聞服務和郵件發送等方面,它使得在網絡(包括互聯網和局域網)上發布信息成了一件很容易的事。它提供ISAPI(IntranetServer API)作為擴展Web服務器功能的編程接口,同時它還提供一個Internet數據庫連接器,可以實現對數據庫的各種操作,例如增刪改查。
七、Glassfish
glassfish是Sun公司推出的Java EE服務器,擁有一個比較活躍的開源社區,不斷的通過社區的反饋來提高其可用性。 Glassfish是一個免費、開放源代碼的應用服務器,它實現了Java EE 5,Java EE 5平台,包括了以下最新技術:EJB 3.0、JSF 1.2、Servlet 2.5、JSP 2.1、JAX-WS 2.0、JAXB 2.0、 Java Persistence 1.0、Common Annonations 1.0、StAX 1.0等。它對集群有着很好的支持,可以簡單到通過添加機器就可輕松的提高網站的帶負載能力。在解析能力方面,它對html的吞吐能力與apache服務器不分上下,是tomcat所不能比的,支持目錄部署,熱部署,解決了tomcat 對熱部署能力的缺陷。在版本方面做的更加人性化,有開發時用的簡化版,有專門用於部署web項目的版本,還有完全符合j2ee標准的版本。
參考博文:
(1) https://zhidao.baidu.com/question/1509690852249364180.html
(2) https://blog.csdn.net/zollty/article/details/86136182
(3) http://www.dataguru.cn/article-13179-1.html (主流Java應用服務器的工作原理及組件設計)
(4) https://segmentfault.com/a/1190000015767937?utm_source=tag-newest
(5) http://www.dataguru.cn/article-13179-1.html (tomcat服務器原理及工作過程)
(6) http://www.elecfans.com/baike/computer/fuwuqi/20180102609748_a.html (服務器分類)