JBoss、Geronimo及Tomcat比较分析

中国IT实验室收集整理 佚名 2008-2-22 保存本文 推荐给好友 收藏本页

在开源的Java应用服务器领域,像JBoss、Tomcat及Apache的Geronimo,他们不仅仅是商业领域的领跑者,同时是技术领域的先行者。当然,所有的Java EE应用服务器的实现不尽相同,但其很多方面具有一定程度的可比性。本文对JBoss4.2、Geronimo 2及Tomcat 6三种开源的Java EE应用服务器,就他们的特性、部署及性能等方面进行一一比较。
一、        前言
当企业级的Java应用程序需要真正的应用部署时,Java EE应用服务器是必不可少的工具。研究表明,除了商业的应用服务器之外,开源的Java EE应用服务器开始成为很多Java企业级应用的最佳选择。而JBoss、Tomcat及Apache的Geronimo是其中最主流的开源Java EE应用服务器。而这三者中,尽管JBoss和Tomcat并非100%的实现了Java EE 5标准,但这二者占有的市场份额相对比较大。Geronimo是对Java EE 5标准100%的实现,正在快速的发展。如果读者想在Java EE领域找份像样的工作,对这三种开源的应用服务器应该达到比较熟悉的程度,并能在一定程度上进行比较区分。
在本文中,对这三种主流的应用服务器,就其特性、部署及性能等方面进行比较。分析了他们各自的特色对该应用服务器的重要性,当然,也提供了一些如何选择适合项目的服务器的原则及建议。

二、        特性比较
表1就JBoss 4.2、Tomcat 6及Geronimo 2的特性进行全面的比较。请注意,表中用到的“部分支持”表述,表明该应用服务器并非完全的支持,需要安装一些额外包。而其中的“原则上支持”表述,表明该应用服务器需要第三方的安装包的支持。注:三种应用服务器均在Linux、Solaris、Windows及Mac OS X上进行过测试。
表1.Java EE应用服务器特性比较

特性
JBoss 4.2
Geronimo 2
Tomcat 6
Java EE 5一致性
部分支持
完全支持
部分支持
支持EJB 3.0
支持
支持
原则上支持
JSP2.1和Servlet2.5
支持
支持
支持
JSF1.2
支持
支持
原则上支持
客户化插件
支持
支持
不支持
业务规则引擎
原则上支持
原则上支持
原则上支持
Hibernate3.x
支持
原则上支持
原则上支持
集群
支持
支持
部分支持
Eclipse IDE
支持
支持
支持
当读者的应用需要比较特殊的扩展,或是想与Java EE 5最贴近时,那么,Geronimo 2是最佳的开源Java EE应用服务器选择。尽管JBoss 4.2与Sun的Java EE标准在实现上有一定的出入,但JBoss 4.2 team提供了许多与Java EE标准很符合的技术,同时也扩充了Java EE 5的标准范围。而Tomcat 6本身就是一种轻量级的解决方案,所以它不并包括Java EE 5的所有特性,或是在JBoss及Geronimo中所提供的特性,但正是由于它的轻量级,才使它对内存的占有量比较少,并且比其它两种服务器运行起来更快。
1.Java EE 5一致性
Sun公司的Java EE 5标准是一种行业标准,而作为这种标准的实现,开源的Java EE 5应用服务器应该与其尽量的保持一致,因此Java EE 5的一致性是一个很重要的指标。在这三种开源的实现中,Geronimo是实现得最好,与Java EE 5标准最贴近的应用服务器。JBoss 4.2支持绝大部分Java EE 5的特性,当然,不久即将发布的JBoss 5将完全支持Java EE 5的所有特性。而Tomcat一般看成是JSP/servlet的容器,仅仅支持Java应用服务器的基本特性。

2.支持EJB3
EJB(Enterprise JavaBeans)是指能在Java EE服务器部署的Java组件。它通常将一些业务功能打包成可重用的组件。新发布的EJB3提供了许多新功能,解决了旧版本中许多问题。JBoss 4.2及Geronimo 2均支持EJB3。Tomcat 6本身并不支持EJB3,但Apache OpenEJB项目可以使Tomcat支持EJB3,据称Tomcat可以运行一种嵌入式的JBoss EJB3容器。

3.支持JSP 2.1/Servlet2.5
对JSP/servlet的支持是绝大部分Java服务器应提供的最基本功能。JSP2.1和Servlet2.5是Java EE 5对JSP/servlet的升级功能。JBoss 4.2、Geronimo 2及Tomcat 6均支持JSP/servlet这一特性。

4.支持JSF 1.2
JSF(Java Server Faces)是一种在Java EE应用部署的组件式架构。提供基本的Web开发的用户界面。与请求驱动的MVC(Model-View-Controller)的架构不同的是,JSF采用了组件驱动的模式。就目前的JSF1.2而言,JBoss 4.2及Geronimo 2都有很好的支持,而运行在Tomcat 6时有不少的问题待解决。

5.支持客户化插件
客户化插件支持,意味着可以在原有应用服务器功能的基础上,开发新的功能,并能很好的协同使用。在JBoss中使用MBeans(managed beans)来处理插件开发。而Geronimo也采用类似的处理方式,只是名称不一样,叫GBeans。这些客户的Beans为开发及部署客户资源时,提供一系列统一的接口。

6.支持业务规则引擎
几乎所有的应用程序都是建立在一系列业务规则之上,或称之为业务逻辑。而业务规则引擎组件则能帮助管理与简化业务逻辑编程。一般的编程过程中,程序员最常见的逻辑有如if/then逻辑。而有了业务规则引擎,则可以实现许多更加智能的业务逻辑。Drools作为一种业内很流行、标准化的业务规则引擎,在JBoss 4.2、Geronimo 2及Tomcat 6中均可得到支持。Geronimo完全支持Drools,而JBoss支持Drools的历史最久,已达三年之久,并使JBoss/Drools成为了一种非常有市场竞争力的业务规则解决方案。

7.支持Hibernate 3.x
Hibernate为Java编程提供了强有力的关系/对象模型(ORM,Object-relational mapping)。Hibernate可以将面向对象的模型映射为关系型数据库,这对Java开发来说是最有吸引力的。Hibernate作为一种开源的软件,最早就是由于JBoss的一个团队所开发(Gavin King)。当然,JBoss 4.2、Geronimo 2及Tomcat 6均支持Hibernate 3。

8.支持JBoss Seam
JBoss Seam是一种著名的应用框架,集成了众多的Java及Web技术,例如Ajax、JSF、Java Portlets、BPM(Business-process management)等技术。Seam是JBoss的项目,理所当然,JBoss 4.2自然支持它,同样Geronimo 2也支持JBoss Seam。据JBoss Seam的开发团队称,Tomcat可以通过使用JBoss嵌入式EJB 3容器来支持JBoss Seam。

9.支持集群
集群通过并行在多台服务器运行同样的服务,从而大大的提高应用的吞吐量,达到所谓的高负荷的效果。由于采用了数台服务器同时运行,所以当其中的某台服务暂时或死机时,对客户不会造成服务停止,从而达到业务的可持续。集群极大的提高了企业级的Java应用的性能、吞吐量等能力。
JBoss 4.2、Geronimo 2及Tomcat 6均以同样的方式来支持集群。JBoss在集群层使用及时复制的方式来达到集群的目的。而Geronimo所发布的集群,还处于测试阶段,需要时间的考验,如果有兴趣,可以与Apache基金组织联系。

10.              支持Eclipse IDE
Eclipse是目前最流行的Java开发工具,自然,与Eclipse的集成是众多Java EE 5应用服务器应该提供的功能。JBoss、Geronimo及Tomcat均支持与Eclipse整合。特别地,JBoss还有自己的Eclipse版本,称为Red Hat Developer Studio,目前正处于测试的阶段。利用Geronimo提供的工具,可以省去手工配置XML文件的烦琐。同时,数据库连接池工具都可以自动的下载所需要的数据库连接驱动。

三、        部署
这三种应用服务器的安装均十分简单。在相关的网站上下载zip或tar包进行解压,唯一需要配置的是设置JAVA_HOME环境变量(不过一般均有配置)。注意,在Linux/Unix系统下,需要先发送chmod命令。
1.Geronimo
对Geronimo 2来说,进行配置及部署Java应用程序非常的简单,特别是通过它提供的Web控制台更加简单。Geronimo控制提供了许多简单的功能来帮助开发人员进行应用程序的配置。可以进行数据库的连接池测试及安全设置或配置等。

图1.Geronimo控制台

2.JBoss
JBoss 4.2有非常漂亮的Web管理控制台,但它所提供的管理功能及特性与Geronimo不尽相同。首先看到的是JBoss的状态及其监测信息,但并没有提供部署功能。而部署Java应用时,只需要将它复制到default/deploy文件夹下面,JBoss会自动的检测到它并进行相关的快速部署。当然,也可以通过修改配置jboss-service.xml来进行客户应用程序所在目录的映射。

图2.JBoss控制台
3.Tomcat
Tomcat 6不愧为一款快速的轻量级的应用服务器。它的控制台提供了基本的部署功能。可以通过Tomcat的控制台进行服务的启动/停止及WAR包的deploy/undeploy操作。当然也提供了Tomcat的运行状态及监测信息,同时有很好的用户授权系统。

图3.Tomcat控制台

四、        性能
就可靠性而言,性能应该是所以的应用服务器所应该提供的最重要的特性。在本文中,笔者做了一个小实验,使用JSP页面及编译好的servlet来测试应用服务器所能处理的用户会话个数以及所能连接的用户数量。当然,实际的Java应用是更加复杂的,而本实验中的JSP页面及servlet是比较简单的,主要用于测试Web应用服务器的稳定性、可靠性及速度。
使用的测试机器为:双核-64位 CPU,4G的内存,在实验中,让第一种应用服务器运行到1200000个会话。当然,这些会话不并是同时连接。

图4.多Session测试JSP页面结果

图5.多Session测试servlet结果
测试所用的代码量只有区区的几百行,为了准确起见,笔者对三种服务器使用了相同之处的配置。当然,如果采用实际的Java应用程序来测试时,所得到的数据结果图会有一定的出入,但大概的趋势会一致。
JBoss 4.2的表现不如Geronimo2,毕竟Geronimo 2所采用的实现技术及思想都是最新的。正如图所示,Tomcat 6的性能最好,因为Tomcat 6本身就是为JSP/servlet量身定做的Java EE 5应用服务器。相比起JBoos或Geronimo需要20秒进行启动的长时间,Tomcat仅仅需要3秒钟。
五、        小结
在本文中,笔者比较了主流的Java EE应用服务器的特性、部署及性能方面的内容,特性方面的比较应该有利于读者选择更加适合自己项目的Java EE应用服务器,做到有目的性的选择服务器,从而达到适合的效果。
同时,笔者测试比较了商用或开源的Java应用服务器,发现商业的Java应用服务器不一定比开源的好,反而在商业的应用服务器(如Sun的Java应用服务器或BEA的WebLogic)中的Bug比开源的的应用服务器更多些。
JBoss、Geronimo及Tomcat是快速可靠的可用于处理部署大规模的Java企业级应用的服务器。特别值得一提的是,很多的高性能Java服务器技术都是从这些开源的应用服务器中总结与借鉴过来,而不是从那些商业的应用服务器中发展而来。

JBoss、Geronimo及Tomcat比较分析相关推荐

  1. JBoss,Geronimo还是Tomcat? ——三种开源Java应用服务器的比较

    相关读书笔记.心得文章列表 <script src="http://blog.csdn.net/js/LoadFeedbackCount.js" type="tex ...

  2. tomcat架构分析 (Session管理)【转】

    原文地址:https://www.iteye.com/blog/gearever-1546423 Session管理是JavaEE容器比较重要的一部分,在app中也经常会用到.在开发app时,我们只是 ...

  3. tomcat架构分析(valve源码导读)【转】

    原文地址:https://www.iteye.com/blog/gearever-1540028 源码面前,了无秘密                               ----侯捷  在to ...

  4. tomcat架构分析(connector BIO 实现)【转】

    原文地址:https://www.iteye.com/blog/gearever-1841586 在tomcat架构分析(概览)中已经介绍过,connector组件是service容器中的一部分.它主 ...

  5. 【Tomcat】Tomcat性能分析

    一.预研任务介绍和预研目标 任务介绍: Apache Tomcat是目前较为流行的web服务器,以其技术先进.性能稳定著称,其次它还是一个免费开源的项目. Tomcat性能分析的意义在于能为日常工作中 ...

  6. java tomcat 日志分析工具_tomcat日志集中采集、分析与展示的几种方法

    大家在做分布式web系统的时候,比如那么多个tomcat,每天都会产生很多的日志(虽然已经按小时进行日志拆分了,但日志内容还是很大,vim查日志的时候很慢),而且那么多个tomcat,每个tomcat ...

  7. J2EE进阶(二十四)JBoss Web和 Tomcat的区别

    J2EE进阶(二十四)JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全球 ...

  8. Tomcat启动分析server.xml

    2019独角兽企业重金招聘Python工程师标准>>> Tomcat Server的结构图 该文件描述了如何启动Tomcat Server <Server> <Li ...

  9. tomcat架构分析(概览)【转】

    原文地址: https://www.iteye.com/blog/gearever-1532822 Tomcat是目前应用比较多的servlet容器.关于tomcat本身的特点及介绍,网上已经有很多描 ...

  10. tomcat启动分析(2)

    2019独角兽企业重金招聘Python工程师标准>>> 1 - 概述 脚本catalina.sh用于启动和关闭tomcat服务器,是最关键的脚本 另外的脚本startup.sh和sh ...

最新文章

  1. 详解通用物体检测算法:基于锚框与无需锚框
  2. ALV输出无法指定STATUS
  3. boost::endian模块实现benchmark的测试程序
  4. 15、sql语句集,Linux 下PHP查询mysql
  5. CodeForces - 1370E Binary Subsequence Rotation(思维)
  6. 你知道 Java 类是如何被加载的吗?
  7. 名图1.8智能隐藏功能_自动打包不脏手才是真智能,双11销冠,拓牛自动打包垃圾桶体验...
  8. mysql表结构定义_Mysql表结构定义及相关语法
  9. 【转】子弹短信内部技术分享:Redis
  10. Git学习笔记(2)——版本的回退,和暂存区的理解
  11. centos6.6装mysql5.7_centos 6.5装mysql5.7
  12. Linux 64位的操作系统版本,查看cpu 以及linux和windows系统是32为还是64位?+查看操作系统版本...
  13. 用UIWebView加载本地图片和gif图
  14. Linux段管理,BSS段,data段,.rodata段,text段
  15. v5服务器装系统,小白必学:宏基V5-591G内存、固态、装系统教程!
  16. 前端RSA加密,加密字符串过长,提示“Message too long for RSA”问题
  17. win10 outlook2016 如何删除IMAP文件夹 (脑残党操作)
  18. odoo12:上传图片,默认显示图标
  19. matlab去除图片水印_初试 Matlab 之去除水印
  20. php收短信,PHP飞信接收短信类

热门文章

  1. 日志分析(偏linux)
  2. OkHttp简单封装
  3. python实现zip分卷压缩与解压
  4. 黄一老师讲述贷款“黑名单”小心别上了黑名单!
  5. JAVA图片加水印(电子奖状填充名字)
  6. NUVOTON新唐单片机使用入门
  7. 云计算 码率适配限速_【省带宽、压成本专题】码率适配限速大揭秘,带你认识这款视频网站节流大杀器...
  8. 国产Si24R2F+2.4GHz超低功耗有源RFID无线发射芯片
  9. 电路设计_STM8S003F3P6 AWUADC使用小结
  10. 安卓音频开发(四)使用lame把wav转mp3