概述
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这种全功能服务器了。