Tomcat Jboss,jetty,Apache WebLogic区别与比较(阿里面试)

Jetty和tomcat的比较

相同点:

Tomcat和Jetty都是一种Servlet引擎,他们都支持标准的servlet规范和JavaEE的规范。html

不一样点:

架构比较
Jetty的架构比Tomcat的更为简单
Jetty的架构是基于Handler来实现的,主要的扩展功能均可以用Handler来实现,扩展简单。
Tomcat的架构是基于容器设计的,进行扩展是须要了解Tomcat的总体设计结构,不易扩展。java

性能比较
Jetty和Tomcat性能方面差别不大
Jetty能够同时处理大量链接并且能够长时间保持链接,适合于web聊天应用等等。
Jetty的架构简单,所以做为服务器,Jetty能够按需加载组件,减小不须要的组件,减小了服务器内存开销,从而提升服务器性能。
Jetty默认采用NIO结束在处理I/O请求上更占优点,在处理静态资源时,性能较高nginx

少数很是繁忙;Tomcat适合处理少数很是繁忙的连接,也就是说连接生命周期短的话,Tomcat的整体性能更高。
Tomcat默认采用BIO处理I/O请求,在处理静态资源时,性能较差。web

其它比较
Jetty的应用更加快速,修改简单,对新的Servlet规范的支持较好。
Tomcat目前应用比较普遍,对JavaEE和Servlet的支持更加全面,不少特性会直接集成进来。数据库

 

1. Tomcat是Apache鼎力支持的Java Web应用服务器只能作JSP和Servlet的Container,不支持EJB,因为它优秀的稳定性以及丰富的文档资料,普遍的使用人群,从而在开源领域受到最普遍的青睐。­实际上Tomcat 部分是Apache 服务 器的扩展,但它是独立运行的,因此当你运行tomcat 时,它实际上做为一个与Apache 独立的进 程单独运行的。apache

 

2.Apache全球应用最普遍的http服务器,免费,出自apache基金组织.apache仅有的不足是,它自己仅提供html静态页面的功能,不能支持jsp、java servlet、asp等功能,浏览器

但经过同其余应用服务器一块儿工做或添加插件来支持。(稳定高效,一般须要与其余服务器软件或插件协同工做)tomcat

 

3. Jboss做为Java EE应用服务器它不可是Servlet容器,并且是EJB容器(同时支持EJB的优化版tomcat),是完整的J2EE容器从而受到企业级开发人员的欢迎,从而弥补了Tomcat只是一个Servlet容器的缺憾。­安全

 

4.BEA WebLogic Server是专门为企业电子商务应用系统开发的它不可是Servlet容器,并且是EJB容器(同时支持EJB的优化版tomcat),是完整的J2EE容器, 企业电子商务应用系统须要快速开发,并要求服务器端组件具备良好的灵活性和安全性,服务器

同时还要支持关键任务所必需的扩展、性 能、和高可用性。BEA WebLogic Server简化了可移植及可扩展的应用系统的开发,并为其它应用 系统和系统提供了丰富的互操做性。

是weblogic不是一款开源的软件,虽然存在免费试用等,但它主要的应用目标为大型商业应用,而这种应用须要高额的license费用

 

5.resin:resin是Caucho公司的产品。resin最突出的是它的性能很是高效,连html页面的效率也直追apache;支持 servlet/jsp,EJB。虽然resin是开源的,不过有两种lisence:GPL和商用lisence,

能够在GPL下无偿使用,但注意商用 的是要交钱的。(高效全功能的轻型服务器软件)

6.websphere:websphere是IBM旗下的一款应用服务器软件。与weblogic类似,同为商业软件,同具备稳定、高效,支持多种应 用……。也是须要高额的费用,适于大型商业应用;有Community Edition版本,是开源的。

(若是有IBM其余配套产品,大型商用考虑使用)

 

搭配: 
1. 若是仅须要展现html页面,而不要其余功能,apache; 
2. 若是是在开发时使用或者是通常小型应用,须要支持jsp/servlet,而又不须要EJB的,tomcat; 
3. 须要支持jsp/servlet,不须要EJB,有但愿提升服务器的效率和稳定性的,apache+tomcat; 
4. 须要支持jsp/servlet/EJB,而又想免费的,apache+jboss(包含tomcat的版本); 
5. 须要支持jsp/servlet/EJB,又能够花点小钱的,resin(实在认为有必要,能够考虑resin+apache); 
6. 大型商用,能够支付较高费用,weblogic(websphere可选); 
7. 大型商用,能够支付较高费用,且有其余IBM相关功能服务的,websphere。

若是对J2EE 包含了 JSF 和EJB 就是标准的javaSE和企业版EJB

 

    EJB从咱们一开始没怎么接触J2EE的时候就开始据说了,据说他是一个容器,据说他很高大上,可是对于咱们这种java菜小鸟来讲真的听不懂呀,这段时间通过个人普遍搜集资料,算是把他的基本定义和基本使用方式知道的差很少了。

      咱们都知道咱们这部分学习的是J2EE,以前学习过J2SE,那么构建知识网的原则咱们知道咱们须要映射,知道他们之间的相同点和不一样点,咱们前期在学习J2SE的时候使用到了CMD而咱们学习J2EE的时候却没有说使用CMD,能够说J2SE是J2EE的一部分,J2EE适用范围更广,它能够当作在J2SE的平台上加上了无数的组件,才构成了他如今的功能!而咱们此次的主角EJB就是这样的一个组件容器,咱们之前接触过ITOO的框架咱们将咱们的工程分为三层表现层、业务逻辑层和数据层,而咱们的EJB就是至关于业务逻辑层,土体的他的位置,请见下图:

 

      视图层或表现层:提供用户界面;接收用户输入;数据输出。WEB应用的状况,JSP以及SERVLET属于视图层组件。
      业务逻辑层:实际的业务逻辑处理。根据视图层传送过来的数据,进行实际的业务逻辑处理(包括数据库的查询,更新等),再把处理后的结果返回给视图层。EJB,以及不使用EJB的状况下担当业务逻辑处理部分的JavaBean等归属于业务逻辑层组件。
    数据库层或数据持久化层:多指用于保存业务数据的数据库,也能够是文件等等。
    EJB属于J2EE体系结构中的业务逻辑层部分。

     

    SessionBean
    主要负责业务逻辑的处理。根据处理时的状态保持与否,SessionBean又被分为:
    Stateful SessionBean(有状态SessionBean)

    Stateless Bean(无状态SessionBean)对象的“状态”是指对象的属性值,也就是对象所携带的数据。Stateful SessionBean能维持会话的状态,就是说能为同一客户端保持上一回被调用时的状态,相似于HttpSession;而Stateless SessionBean则不能维持会话状态,也就是说,对Stateless SessionBean来讲,每一个方法都是独立的,由于对特定客户端不保持会话状态,因此通常也不在Stateless SessionBean里定义成员变量。
EntityBean
       负责数据库的访问。一般由SessionBean调用。EntityBean的一个实例所表示的数据一般表明了关系数据库中特定表的特定的一行数据。EJB3开始,EntityBean部分的功能能够经过JPA来实现。
EntityBean的做用:
1,对数据库的操做:查询,数据的更新,删除等
2,数据库表数据的携带
根据对数据库操做(持久化)的不一样,EntityBean分为如下2种类型:
1,BMP (Bean-managed persistence:bean管理持久化):持久化操做(数据库的访问,数据的建立,更新,删除等)由EntityBean的实现(javax.ejb.EntityBean的实现类)自身完成。
2,CMP (Container-managed persistence:容器管理持久化):持久化操做由容器根据deploy时的配置信息(ejb-jar.xml)自动完成。
MDB (message-driven bean:消息驱动bean)
      MDB主要用来处理异步消息。客户端调用SessionBean,EntityBean的方法时,会一直处于等待状态,直到被调用的方法处理完毕。但使用MDB,客户端向容器发送一个JMS消息以后,没必要等待MDB处理完毕即可直接返回。JMS被发送给由容器管理的JMS消息队列,容器在适当的时候通知MDB的callback方法onMessage加以处理。一个MDB须要实现javax.jms.MessageListener接口与javax.ejb.MessageDrivenBean接口。

平时咱们常常看到各类容器名称:Servlet容器、WEB容器、Java WEB容器、Java EE容器等,还有各类服务器名称:应用服务器、WEB服务器、WEB应用服务器、Java WEB应用服务器、Java EE服务器等,这么多类似名称,难以弄明白它们之间的区别与联系。

       下面咱们尝试从它们的定义中,区分它们,找出他们之间的联系,最后经过Apache、nginx、tomcat等举例说明容器以及服务器的联系。

一、容器与服务器的联系

       如上图,咱们先来看下容器与服务器的联系:容器是位于应用程序/组件和服务器平台之间的接口集合,使得应用程序/组件能够方便部署到服务器上运行。

二、各类容器的区别/联系

2-一、容器(Containers)

       容器一般理解就是装东西的,咱们这里说技术上的容器就是能够部署应用程序,并在上面运行的环境。

       通常来讲,它处理屏蔽了服务器平台的复杂性,使得应用程序在它的基础上能够方便快捷的部署;而对于应用程序来讲,它就是位于应用程序和平台之间的接口集合。

       容器管理组件的生命周期,向应用程序组件分派请求,并提供与上下文数据(如关于当前请求的信息)的接口。

       注意,容器技术虚拟化(如Docker 应用容器引擎)不在本文关注范围内。

2-二、Servlet容器

       Servlet:属于Java EE重要技术规范,构建了"接收请求--调用servlet程序处理--返回响应"基本模型。

       Servlet程序:Java提供了开发Servlet程序的API,该API能够说Servlet容器的一部分,它对接应用程序与Servlet容器;

       Servlet容器:就是实现了Servlet技术规范的部署环境,它能够部署运行Servlet程序。

2-三、Java WEB容器

       WEB容器:能够部署多个WEB应用程序的环境。

       Java WEB容器:实现了Java EE规定的WEB应用技术规范的的部署环境。

       Java EE WEB应用技术规范:Servlet、JSP(JavaServer Pages)、Java WebSocket等。

       因此,完整的Java WEB容器包含Servlet容器。

2-四、Java EE容器

       Java EE容器:实现了Java EE技术规范的部署环境。

       Java EE技术规范:除了上面说的Servlet、JSP等Java EE WEB应用技术规范,还包括EJB(Enterprise JavaBeans)等许多技术规范。

       因此,完整的Java EE容器包含Java WEB容器(Servlet容器)、EJB容器等。

 Apache与Tomcat 区别:

二者定位:Apache是HTTP Web服务器,Tomcat是Web容器。

有一个很是形象的比喻:Apache是一辆车,能够装载静态的物件(HTML静态网页等);但不能装动态的水(JSP、CGI等),要装水就须要桶(容器),固然桶也能够不放在车上而单独存放,则该容器即为Tomcat。

二者的主要区别:

  • Apache是世界上最流行的Web服务器(其次是微软的IIS),能够处理浏览器的HTTP请求,默认端口为80;Tomcat是运行在Apache之上的应用服务器,为客户端提供能够调用的方法。Tomcat是一个Servlet容器(能够认为Apache的扩展),可独立运行。
  • Apache只支持HTML等静态普通网页,能够单向连通Tomcat(Apache能够访问Tomcat的资源,反之否则);Tomcat是Servlet容器,能够支持JSP、PHP和CGI等,其中CGI是公共网关接口,能够用Perl编写CGI脚本。
  • Apache侧重于HTTP Server;Tomcat侧重于Servlet引擎。

二者能够整合:当客户端须要请求静态资源,只须要Apache服务器响应请求;当客户端须要动态资源,如JSP,须要Tomcat服务容器(Tomcat能够将JSP解析为Servlet)。因为JSP须要JDK的数据库驱动接口,因此通常组合是Apache+Tomcat+JDK。

两篇介绍Apache服务网器比较好的博客:Apache与Tomcat的区别于联系,http://www.admin10000.com/document/974.html;web服务器apache架构与原理,http://www.cnblogs.com/fnng/archive/2012/11/08/2761713.html。

Tomcat==>web容器,包含了Servlet容器;

因为Servlet没有main方法,Servlet生命周期方法的调用受控于容器,即容器管理Servlet的生命周期,包括初始化(init)、服务调用(service)和销毁(destroy),Tomcat就是一个Servlet容器。

当Web服务器获得一个Servlet请求时,并非直接将请求提交给Servlet,而是转交给部署该Servlet的Web容器(Tomcat),由容器向Servlet提供HTTP请求和响应,并由容器调用Servlet的方法,如doGet()和doPost()。更详细的容器处理请求和响应过程,后边再整理。

 

 参考:Web服务器(Apache)与Servlet容器(Tomcat)

参考:J2EE总结之EJB总结

参考:Tomcat Jboss Apache WebLogic区别与比较

参考:各类容器与服务器的区别与联系:Servlet容器 WEB容器 Java EE容器 应用服务器 WEB服务器 Java EE服务器

相关文章
相关标签/搜索