JBossGeronimo还是Tomcat三种开源Java应用服务器.docx
《JBossGeronimo还是Tomcat三种开源Java应用服务器.docx》由会员分享,可在线阅读,更多相关《JBossGeronimo还是Tomcat三种开源Java应用服务器.docx(8页珍藏版)》请在冰豆网上搜索。
![JBossGeronimo还是Tomcat三种开源Java应用服务器.docx](https://file1.bdocx.com/fileroot1/2022-11/29/804e0cc3-dfba-4924-b35a-ee9b6f32fcdb/804e0cc3-dfba-4924-b35a-ee9b6f32fcdb1.gif)
JBossGeronimo还是Tomcat三种开源Java应用服务器
JBoss,Geronimo还是Tomcat——三种开源Java应用服务器
JBoss,Geronimo还是Tomcat,——三种开源Java应用服务器的比较
1.Java企业特性比较
1.1.JavaEE5兼容性
1.2.EJB3(企业JavaBeans技术)能力
1.3.JSP2.1和Servlet2.5能力
1.4.JSF1.2支持
1.5.定制化插件支持
1.6.业务规则引擎支持
1.7.Hibernate3.x支持
1.8.JBossSeam支持
1.9.集群支持
1.10.EclipseIDE支持
2.安装与部署
2.1.部署
3.性能基准
4.结论
概述
像JBoss、Tomcat和ApacheGeronimo这样的开源JavaEE应用服务器轻松地立足于同类商业产品之中,并且真正地在技术革新中处于市场领先地位。
但是这些开源JavaEE应用服务器并不完全等同。
在这篇文章中,我将从特性、部署和性能方面对JBoss4.2,Geronimo2和Tomcat6三种服务器进行了比较。
当涉及到企业级应用开发时,Java企业版(JavaEE)应用服务器被视为Web开发的标准。
虽然有商业产品可供选择,但研究表明开源已经成为企业IT基础设施中熟悉的一部分。
JBoss4.2,Geronimo2和Tomcat6是3种被广泛使用的开源的JavaEE服务器。
在它们之中,尽管JBoos和Tomcat都没有和JavaEE完全兼容,但它们仍然保有主要的市场。
与此同时,具有完全JavaEE兼容性的Geronimo正迅速呈现出强劲的势头。
如果你想在JavaEE的职业市场中取得竞争优势,你就应该熟悉上述3种开放源代码的服务器,并了解它们之间的不同。
在本文中,我会在特性、部署和性能方面比较这三种领先的开源Java应用服务器。
并且解释为什么在每种应用服务器有多种多样的不同特性,同时也提供一些对如哪种服务器更适合你的企业架构的调查。
我在这里发表的讨论包括来自RedHat的ChantalYang和Apache软件基金会的评论。
1.Java企业特性比较
表1提供了JBoss4.2、Tomcat6和Geronimo2在实现JavaEE功能特性方面的快速比较。
请注意,特性被标记为部分表示没有完全被服务器支持,你需要安装额外的软件包。
如果被标记为可选,则你必须安装第三方软件包才能使用。
这三种服务器都已经在Linux、Solaris、微软Windows和MacOSX上测试过,JBoss已经在HP-UX和AIX上的测试,而Tomcat也在AIX上也测试过。
在下面的表格中,你可以找到更多关于它们各自特性的信息以及为什么这些特性如此重要。
表1.JavaEE的特性比较
如果你的Java应用需求尤为广泛或者你希望保持全部的JavaEE5兼容性的话,那么Geronimo2将是明智的选择。
虽然JBoss4.2没有完全兼容Sun的JavaEE5标准,但是JBoss4.2小组负责了一些尖端技术,而这些技术将被所有的服务器使用并且将被添加到标准的JavaEE5中。
Tomcat6本身是一个轻量级的解决方案,它不包含所有的JavaEE5特性以及在JBoss和Geronimo中提供的额外软件包,但它不需要太多的内存,甚至在小型服务器上也能运行得很快。
现在,让我们看看为什么这些特性如此重要。
1.1.JavaEE5兼容性
如果你的企业级Java应用必须完全兼容Sun的JavaEE5服务器特性的话,那么JavaEE兼容性就是一个重要的问题。
Geronimo是三种服务器中唯一完全兼容JavaEE5的。
JBoss4.2支持大部分的JavaEE5特性,而且RedHat马上就要公布的JBoss5将对JavaEE5完全兼容。
Tomcat是一个JSP/Servlet容器,它只支持基本的Java
应用服务器特性。
1.2.EJB3(企业JavaBeans技术)能力
企业JavaBeans(EJB)是一个为JavaEE服务器应用开发服务的Java组件架构。
它允许将功能封装到可重用组件中。
早期版本的EJB被认为是难以开发的,即使其意图是给开发带来好处。
而新的EJB3就是为了解决较早版本中存在的困难,并且提供了一些新的功能。
JBoss4.2和Geronimo都支持EJB3。
Tomcat本身不提供EJB3的兼容性,但是你可以将Apache的OpenEJB项目可以嵌入到Tomcat中使其支持EJB3。
根据Apache基金会的JeffGenender所述,Tomcat也可以在JBoss的嵌入式版本中运行。
1.3.JSP2.1和Servlet2.5能力
JSP/servlet特性是任何Java服务器中最基本的能力。
JSP2.1和servlet2.5是新版JavaEE5中提供的能力。
JBoss4.2、Geronimo2和Tomcat6都支持这些新的JSP/servlet版本。
1.4.JSF1.2支持
JSF(JavaServerFaces)是一个JavaEE的应用开发架构,它使得开发基于Web的用户界面更加容易。
JSF不是一个需求驱动的MVC(模型视图-控制器)的体系结构,而是使用了基于组件的方法。
JBoss4.2和Geronimo2都支持最新的JSF1.2版本。
JSF1.2也可以在Tomcat6上运行,但是发现了一些问题。
1.5.定制化插件支持
插件支持是一种可以将新功能或特性引入到服务器中的架构。
JBoss称它的插件开发特性为MBeans(被管理的Beans)。
Geronimo也有被称为GBeans的相似功能。
这些定制的Beans提供了一套开发和管理定制资源的接口,而这些接口也可以作为插件组件被重用。
根据JeffGenender所言,Geronimo使插件机制更进了一步:
使用Geronimo,你可以从许多组件中挑选一部分来建立符合需要的应用服务器栈。
例如,如果想安装Liferay门户、或者Apache目录服务,你可以在管理控制台中添加URL并通过网络安装插件。
插件管理系统可以检索出所有必须的依赖并且安装它们。
Geronimo也可以定制组件,Jeff总结如下:
它具有使应用程序如你所愿的变成轻量级或者重量级的能力。
你可以充分利用包括所有组件的JavaEE5栈,或者通过将Geronimo作为Web容器来使用少量的G,或者使用微型的G——它仅仅是Geronimo内核和一个完美的SOA和ESB解决方
案的基础。
你可以添加和删除组件,来只提供自己想用的那部分。
如果不需要EJB的话,你可以简单从控制台中删除组件。
RedHat的ChantalYang表示:
JBoss4提供了“从微内核”组建应用服务器的好处。
就像Yang所说,这使得JBoss能够以插件方式提供多种的组件来建立一个定制的应用服务器。
Yang还表示,JBoss5和它的微容器将极大地提高MBeas的插件支持能力,还没有别的应用服务器在其核心具有这样一个改进的基于POJO的微容器。
1.6.业务规则引擎支持
几乎每一种应用都是建立在一系列业务规则上的,这也称为业务逻辑。
业务规则引擎可以使业务逻辑规划更容易管理。
在大多数的规划中,基本逻辑就是必须的工作。
业务规则引擎可以使你容易实现更加智能的逻辑。
JBoss4.2,Geronimo2和Tomcat6都支持Drools,它是一个流行的、标准兼容并且强大的业务规则引擎。
虽然Geronimo是一个完全JavaEE5认证的服务器,并可以运行Drools,但是JBoss在编写本文时已经提供了三年的Drools支持,这使得JBoss的Drools是一个更加强大的业务规则解决方案。
JBoss公司最近已将Drools命名为JBossRules。
此Drools项目本身开始于2001年。
1.7.Hibernate3.x支持
Hibernate为Java语言提供对象关系映射(ORM)服务。
其易于使用的框架允许你将面向对象的模型映射到传统的关系数据库中,这对于Java开发是一个有力的促进。
简而言之,Hibernate管理持久化,让你能够将POJO存储到几乎任何类型的SQL数据库中。
并且在进行操作时,对你的程序来说那些对SQL数据的访问是透明的,这使得应用数据和对象管理更加容易。
Hibernate是一个开放源码包,最初是由JBoss的GavinKing领导的小组所开发。
现在运行在许多JavaEE服务器上,并且也能与J2SE一起工作。
JBoss4.2,Geronimo2和Tomcat6都支持Hibernate3。
1.8.JBossSeam支持
JBossSeam是一个强大的应用框架,它整合了许多Java和Web技术,包括Ajax(asynchronousJavaScriptandXML)、JSF、EJB3、JavaProtlets和BMP(business-processmanagement)。
Seam是JBoss的一个项目,所以JBoss自然支持它,同样Geronimo也支持。
根据Seam的厂商所言,Seam应用可以运行在使用了JBoss可嵌入EJB3容器的Tomcat上。
1.9.集群支持
集群是一个技术术语,它是多个并行运行的服务器,这些服务器提供相同服务、
以求获得高可用性:
因为通过服务器集群可以支持更多的客户,如果集群中的某个服务器崩溃,其它的服务器可以继续为客户提供服务。
在JavaEE服务器案例中,即使在集群中的一台服务器崩溃,Java应用仍然可以使用。
集群为企业级Java应用提供了可扩展性、提高了性能,并消除了单点故障。
JBoss4.2,Geronimo2和Tomcat6都以某种方式支持集群。
据ChantalYang称,JBoss使用“通过伙伴复制和细粒复制以高性能和高可靠的集群层”。
Geronimo最近发布了一个针对纠正Geronimo2集群问题的补丁,所以在这点看来,Geronimo可能还要做一些测试。
如果你对Geronimo的集群感兴趣,可以咨询Apache软件基金会。
1.10.EclipseIDE支持
Eclipse可以说是Java开发中最受欢迎的IDE,所以将它同你的JavaEE服务器集成是培养良好开发的途径。
JBoss、Geronimo和Tomcat都支持Eclipse集成。
JBoss公司有自己版本的Eclipse,被称作是RedHatDeveloperStudio,在编写本文时还处于测试阶段。
2.安装与部署
根据测试,安装以上三种Java服务器都是非常容易的。
除了将已下载的zip或者tar包解压,你所要做的就是设置JAVA_HOME环境变量指向Java1.5的安装目录。
在运行startup或者是shutdown脚本以启动或停止这些服务器之前,必须设置这个环境变量。
注意在Linux/Unix系统中,可能还需要使用chmod命令赋予这些脚本可执行权限。
2.1.部署
当谈到通用配置和部署时,Geronimo2是非常光彩夺目的。
我发现通过它的Web控制台(见下面的图1)来配置和部署Java应用是一件轻而易举的事。
正如JeffGenender的解释:
Geronimo控制台包含许多不同的向导以帮助使得应用服务器的配置尽可能简单。
Geronimo包含的向导让你可以测试数据库连接池,安全领域等。
你可以通过一个易于使用的向导来取代过去编辑XML配置或停止和重新启动服务器的工作,数据库连接池向导甚至可以为你从网络上下载大部分的驱动,以使你无需去找适合数据库的驱动。
Geronimo控制台也可以配置大多数内嵌在Tomcat6容器中的特性,甚至不必接触到一个XML配置文件。
图1.GeronimoWeb控制台(点击可放大图像)
JBoss4.2也有一个外观漂亮的管理控制台(见图2),但它并不提供和类似于Geronimo的特性。
它主要是提供JBoss状况和监控信息,但缺乏部署功能。
要部署一个应用程序,你可以简单的拷贝它到default/deploy目录中,然后它会被自
-service.xml配置文件中指定自定义部署目动迅速的部署。
当然,你可以在jboss
录。
图2.JBossWeb控制台(点击可放大图像)
Tomcat6快速轻巧,正真形成一个轻量级的应用服务器。
通过提供一个漂亮的Web控制台,它提供你所需要的基础功能(见图3)。
你可以从基于Web的Tomcat管理器中启动/停止和部署/卸载WAR应用。
同时它还提供大部分有用的状态和监控信息。
它也为Web控制台提供了一种良好的基础认证制度:
你只需在Tomcat服务器目录中的一个XML文件中简单的指定用户/密码。
图3.TomcatWeb控制台(点击可放大图像)
3.性能基准
随着可靠性的提高,性能或许是应用服务器中最重要的一个特性。
为了服务器的基本测试,我使用JSP页面和编译好的Servlet做了简单的测试,看看应用服务器能处理多少用户应用会话、连接用户的速度有多快。
真实世界中的Java应用非常广泛,而我对JSP和Servlet的测试却非常少量,因为我只要求测试这些服务器的基本可扩展性、可靠性和速度。
通过使用双核64位CPU和4GB内存的服务器,我获得了三种服务器在运行于多达120万并发请求下的数据。
这并不意味着同步连接,而是意味保持独一无二的、并发的、通过浏览器客户端连接的用户会话。
如果我有更多的内存,我肯定可以获得超过120万的会话。
图4和图5显示了基准测试结果。
图4.启动大量的JSP会话
图5.一个检查会话的Servlet的大量命中
这里,用于搜集这些基准数据的代码只有几百行。
为了获得准确数据,我为每种服务器都使用了同样的配置。
在真实世界的JavaEE应用中,每一个会话都保持比这个测试更多的数据,因此你可能得不到我所得到的如此海量的数字,除非你在一台有八个处理器和足够多的内存的服务器上运行。
JBoss4.2和Geronimo表现得非常不同,主要是因为Geronimo版本更加新、并且使用了最新的内核。
Tomcat6是最好的,这是因为它是一个专门为JSP/Servlet服务的轻量级的服务器,而这些正是我测试的基准。
Tomcat只需要3秒的启动时间,而JBoss和Geronimo则需要大约20秒。
如果这些服务器使用完所有的内存,它们都将濒临崩溃。
在JBoss4.2中我曾经有一次Java空指针异常就试图关闭它的经历,即使它还没有使用完所有的内存。
当用完所有内存时,Geronimo和Tomcat都似乎非常糟糕,此时关闭它们是非常困难的。
4.结论
我在商业Java应用服务器(如Sun的Java应用服务器和BEA的WebLogic)和开源替代品中都已经安装和部署了Java应用。
在这篇文章中,根据我的经验,与开源服务器相比,商业应用服务器有更多的Bug,并且它们更难安装。
部署也是一个问题,至少在Sun的Java应用服务器的最新版是这样。
底线:
JBoss,Geronimo和Tomcat是可靠、快速的,而且一定能够处理好在大型的企业级应用中的交易。
此外,许多高需求的Java服务器技术特性来源于开源世界中,而不是商业世界中。
在这篇文章中,我在特性、部署和性能方面比较了三种流行的开源JEE应用服务器。
这些特性的比较可以帮助你决定选择最适合应用环境需求的开源应用服务器,而性能基准测试能帮助你的考虑更加全面。