概述
Web容器是一種服務調用的規范,J2EE運用了大量的容器和組件技術來構建分層的企業應用。在J2EE規范中,相應的有WEB Container和EJB Container等。
Web容器給處於其中的應用程序組件(JSP,SERVLET)提供環境,是的JSP,SERVLET直接與容器中的環境變量打交道,而不必關注其他系統問題。
Web容器更多的是與HTTP的請求打交道,而EJB容器不是,它更多的是跟數據庫其他服務打交道。
Web服務器
Web服務器可以處理HTTP協議,當Web服務器接收到一個HTTP請求,就會返回一個HTTP響應。
Web服務器可以針對靜態頁面或者圖片的請求進行跳轉,或者把動態響應委托給其他一些程序,如CGI,JSP,servlets,Asp,Javascript或者其他服務器端技術。
Web服務器僅僅提供一個可執行服務器端環境和返回響應的環境,不涉及其他技術。
Apache
是簡單的web服務器,速度快,在大型網站中,常與應用服務器配合部署,僅支持靜態網頁。
Nginx
著名的HTTP服務器,速度極快,支持負載均衡。
應用程序服務器
根據定義,作為應用程序服務器,要求可以通過各種協議(包括 HTTP 協議)把商業邏輯暴露給(expose)客戶端應用程序。應用程序使用商業邏輯就像你調用對象的一個方法或過程(語言中的一個函數)一樣。
Tomcat
Tomcat僅是個HTTP服務器,以及Servlet/JSP API的執行器,也就是所謂的servlet容器,不支持EJB,JMS。
相對於JBOSS來說較為輕量級,實現的功能也較少,不能完整的支持最新的JavaEE標准,適用於較為簡單的Web應用,簡單易用。
JBOSS
JBOSS是開源應用服務器,JBOSS與Tomcat不同,它提供了更多開箱即用的功能特性,也更重,它完整的實現了J2EE 6。
那么應該怎樣選擇Tomcat或者是JBOSS,如果對大企業來說,JBOSS提供了額外的如下功能:
- JMS messaging for asynchronous integration
- Web Services engine (JAX-WS and/or JAX-RS)
- Management capabilities like JMX and a scripted administration interface
- Advanced security, e.g. out-of-the-box integration with 3rd party directories
- EAR file instead of "only" WAR file support
- all the other "great" Java EE features I can't remember :-)
Glassfish
Oracle開發的官方Java容器,支持最新的特性,有自己的web容器(不是tomcat)。
選型
主要根據應用的規模和需求來確定,如果僅僅是簡單應用,不需要支持負責的EJB或者JMS等特性,選擇簡單易用的Tomcat是一個好選擇。如果需要更多J2EE的特性,則需要考慮使用Jboss這種全功能服務器了。