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