服务器

位置:IT落伍者 >> 服务器 >> 浏览文章

apache server与tomcat 的区别以及整合


发布日期:2022年09月24日
 
apache server与tomcat 的区别以及整合

Tomcat是一个免费的开源的Serlvet容器它是Apache基金会的Jakarta项目中的一个核心项目由ApacheSun和其它一些公司及个人共同开发而成由于有了Sun的参与和支持最新的Servlet和Jsp规范总能在Tomcat中得到体现

Tomcat不仅仅是一个Servlet容器它也具有传统的Web服务器的功能处理Html页面但是与Apache相比它的处理静态Html的能力就不如Apache我们可以将Tomcat和Apache集成到一块让Apache处理静态Html而Tomcat处理Jsp和Servlet这种集成只需要修改一下Apache和Tomcat的配置文件即可

apache是一个web服务器程序可以作为web服务器使用不过只支持静态网页 但是如asp php cgi jsp等动态网页的就不行如果要在APACHE环境下运行jsp 的话就需要一个解释器来执行jsp网页而这个jsp解释器就是TOMCAT

概括来说tomcat和apache都可以作为web服务器来使用也就是单独作为一个web服务器httpd完成http服务的请求与响应但是除此之外tomcat除了可以处理html页面以外还可以作为servelt容器来解析jsp页面和servlet但是Apache服务器则只能处理html页面也就是说它仅仅完成一个web服务器的作用如果要完成其他功能比如运行phpjsp页面则要另外集成相应的web容器

同是作为web服务器仅仅处理html页面时Apache服务器的性能比tomcat要好因此常常将两者结合一般来说大的站点都是将Tomcat与Apache的结合Apache负责接受所有来自客户端的HTTP请求然后将Servlets和JSP的请求转发给Tomcat来处理Tomcat完成处理后将响应传回给Apache最后Apache将响应返回给客户端

Web服务器(Web Server)

Web服务器可以解析(handles)HTTP协议当Web服务器接收到一个HTTP请求(request)会返回一个HTTP响应(response)例如送回一个HTML页面为了处理一个请求(request)Web服务器可以响应(response)一个静态页面或图片进行页面跳转(redirect)或者把动态响应(dynamic response)的产生委托(delegate)给一些其它的程序例如CGI脚本JSP(JavaServer Pages)脚本servletsASP(Active Server Pages)脚本服务器端(serverside)JavaScript或者一些其它的服务器端(serverside)技术无论它们(译者注脚本)的目的如何这些服务器端(serverside)的程序通常产生一个HTML的响应(response)来让浏览器可以浏览

要知道Web服务器的代理模型(delegation model)非常简单当一个请求(request)被送到Web服务器里来时它只单纯的把请求(request)传递给可以很好的处理请求(request)的程序(译者注服务器端脚本)Web服务器仅仅提供一个可以执行服务器端(serverside)程序和返回(程序所产生的)响应(response)的环境而不会超出职能范围服务器端(serverside)程序通常具有事务处理(transaction processing)数据库连接(database connectivity)和消息(messaging)等功能

虽然Web服务器不支持事务处理或数据库连接池但它可以配置(employ)各种策略(strategies)来实现容错性(fault tolerance)和可扩展性(scalability)例如负载平衡(load balancing)缓沖(caching)集群特征(clustering—features)经常被误认为仅仅是应用程序服务器专有的特征

应用程序服务器(The Application Server)

根据我们的定义作为应用程序服务器它通过各种协议可以包括HTTP把商业逻辑暴露给(expose)客户端应用程序Web服务器主要是处理向浏览器发送HTML以供浏览而应用程序服务器提供访问商业逻辑的途径以供客户端应用程序使用应用程序使用此商业逻辑就象你调用对象的一个方法(或过程语言中的一个函数)一样

应用程序服务器的客户端(包含有图形用户界面(GUI)的)可能会运行在一台PC一个Web服务器或者甚至是其它的应用程序服务器上在应用程序服务器与其客户端之间来回穿梭(traveling)的信息不仅仅局限于简单的显示标记相反这种信息就是程序逻辑(program logic) 正是由于这种逻辑取得了(takes)数据和方法调用(calls)的形式而不是静态HTML所以客户端才可以随心所欲的使用这种被暴露的商业逻辑

在大多数情形下应用程序服务器是通过组件(component)的应用程序接口(API)把商业逻辑暴露(expose)(给客户端应用程序)的例如基于JEE(Java Platform Enterprise Edition)应用程序服务器的EJB(Enterprise JavaBean)组件模型此外应用程序服务器可以管理自己的资源例如看大门的工作(gatekeeping duties)包括安全(security)事务处理(transaction processing)资源池(resource pooling) 和消息(messaging)就象Web服务器一样应用程序服务器配置了多种可扩展(scalability)和容错(fault tolerance)技术

警告(Caveats)

现在XML Web Services已经使应用程序服务器和Web服务器的界线混淆了通过传送一个XML有效载荷(payload)给服务器Web服务器现在可以处理数据和响应(response)的能力与以前的应用程序服务器同样多了

另外现在大多数应用程序服务器也包含了Web服务器这就意味着可以把Web服务器当作是应用程序服务器的一个子集(subset)虽然应用程序服务器包含了Web服务器的功能但是开发者很少把应用程序服务器部署(deploy)成这种功能(capacity)(译者注这种功能是指既有应用程序服务器的功能又有Web服务器的功能)相反如果需要他们通常会把Web服务器独立配置和应用程序服务器一前一后这种功能的分离有助于提高性能(简单的Web请求(request)就不会影响应用程序服务器了)分开配置(专门的Web服务器集群(clustering)等等)而且给最佳产品的选取留有余地

上一篇:Facebook开源服务器和数据中心核心技术

下一篇:如何用Java实现Web服务器