在开源的
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服务器技术都是从这些开源的应用服务器中总结与借鉴过来,而不是从那些商业的应用服务器中发展而来。
相关推荐
它还可以与其他Java EE组件如EJB(Enterprise JavaBeans)和JMS(Java消息服务)集成,但通常需要像Apache Jakarta的Geronimo或Red Hat的JBoss这样的完整应用服务器。然而,对于简单的Web应用,Tomcat本身已经足够...
10. **与其他Java EE组件的集成**: 虽然Tomcat主要是一个Servlet和JSP容器,但也可以与其他Java EE组件(如EJB、JMS等)集成,通过使用第三方库或容器(如Apache Geronimo或Red Hat JBoss AS)。 总的来说,"apache...
9. **扩展性**:Tomcat可以与其他Java EE组件(如EJB容器)结合,通过集成Apache Geronimo或JBoss AS等应用服务器,实现更全面的企业级功能。 10. **社区支持**:作为开源项目,Tomcat拥有活跃的社区,提供丰富的...
在实际应用中,当Hibernate与JTA结合时,开发者通常会配置容器(如Tomcat、JBoss等)来管理事务。通过在部署描述符中声明JTA事务管理器,Hibernate会自动参与到JTA事务中,确保了在分布式环境下的数据一致性。例如,...
Tomcat由Apache Software Foundation开发,是市场上最受欢迎的Java Web应用服务器之一,与Jetty、Resin、WebSphere、WebLogic、JBoss、Glassfish、Geronimo等其他服务器相比,其市场份额较高。 Tomcat与Java技术的...
Tomcat不仅支持Servlet和JSP,还可以与Java EE应用服务器如Apache Geronimo、JBoss或GlassFish等集成,实现更全面的企业级功能。 在压缩包文件名称"apache-tomcat-7.0.57.exe"中,".exe"表明这是一个Windows平台下...
它可以与其他Java EE组件(如EJB容器)结合使用,形成完整的Java应用服务器,如Apache Tomcat与Apache Geronimo或JBoss AS的集成。 总之,"apache-tomcat-7.0.52.rar"是一个用于部署和运行Java Web应用的重要工具,...
在扩展性方面,Tomcat可以与其他Java EE组件(如EJB容器)集成,形成更完整的应用服务器,如Apache Geronimo或Red Hat JBoss。尽管Tomcat本身不提供所有Java EE特性,但对于许多轻量级应用,它已经足够强大。 总之...
在Hibernate配置中,可以通过`<transaction-manager>`元素指定使用JTA,此时,`UserTransaction`实例可以从JNDI查找,或者通过容器(如Tomcat、JBoss等)提供的API获取。这样,Hibernate就可以利用JTA进行分布式事务...
本篇文章主要分析了2022年主流的三种开源JavaEE应用服务器:JBoss、Tomcat和Apache Geronimo。 首先,JBoss是一个广受欢迎的选择,虽然在实现Java EE 5标准上存在一些差异,但提供了丰富的扩展和技术支持,例如EJB3...
10. **与Java EE集成**:虽然Tomcat主要是一个Servlet和JSP容器,但可以通过与其他开源项目(如Apache Geronimo或JBoss AS)配合,实现对Java EE完整特性的支持。 总而言之,Apache Tomcat 6.0.32作为一个高效的...
10. **与Java EE的关系**:虽然Tomcat不完全实现Java EE规范,但可以通过与其他开源项目(如Apache Geronimo或JBoss AS)集成,提供更全面的企业级功能,如EJB支持、JMS和JTA。 总的来说,Apache Tomcat 7.0.96 是...
标题“tomcat-6.0.20”指的是Apache Tomcat...Tomcat的轻量级特性使其成为小型到中型应用的理想选择,而在大型企业环境中,它经常与其他Java EE应用服务器集成,如Apache Geronimo或IBM WebSphere,提供更全面的功能。
- **应用广泛**:在开源与商业项目中广泛应用,如**Geronimo**、**JBoss**、**IBM Tivoli**等。 #### 二、Jetty架构分析 - **总括**:Jetty的核心设计理念在于其简洁高效的架构设计,使得开发者能够在短时间内轻松...
早期,Java应用服务器的开源选择包括Tomcat、Resin和JBoss AS,而商业软件则有IBM的WebSphere和BEA的WebLogic。现在,Apache的Geronimo和Sun的Glassfish也是值得考虑的JEE应用服务器。 在Web Server方面,淘宝网...
- JBoss + Tomcat - Jetty - JFox - JOnAS + Jetty - JOnAS + Tomcat - JRun 4 Updater - Oracle AS 10.1.2 - Pramati 4.1 - Resin 3.0 - Rex IP 2.5 - Sun JSAS 8.0 - Tomcat 5.0.x/5.5.x - WebLogic 8.1 SP4 - ...
5. **Tomcat, Jetty, JBoss, Apache Geronimo, JOnAS, OpenEJB, OpenJMS, JORAM, JOTM**:这些都是应用服务器,为部署和管理 Java 应用提供平台,其中 JBoss 和 Tomcat 特别流行。 6. **Struts, Cocoon, Turbine, ...
Seasar2提供了对不同执行环境的支持,如Servletcontainer(如Tomcat)和完全对应J2EE的应用服务器(如JBoss、WebSphere、WebLogic)。在不同的环境中,你可能需要或不需要某些特定的JAR文件,例如geronimo-j2ee_1.4_...