Tomcat、JBoss和Glassfish之间有什么区别?

我开始研究企业Java,我接下来的书提到它将使用JBoss。Netbeans与Glassfish一起发货。我以前使用过Tomcat。

这三个程序有什么不同?

320388 次浏览

Tomcat只是一个servlet容器,也就是说,它只实现servlet和JSP规范。Glassfish和JBoss是完整的Java EE服务器(包括EJB、JMS等),Glassfish是最新Java EE 6堆栈的参考实现,但JBoss在2010年还没有完全支持它。

jboss和glassfish包括一个servlet容器(如tomcat),但是两个应用服务器(jboss和glassfish)也提供了一个bean容器(以及一些我想象的其他东西)。

Tomcat只是一个HTTP服务器和Java servlet容器。JBoss和GlassFish是成熟的Java EE应用服务器,包括EJB容器和该堆栈的所有其他特性。另一方面,Tomcat的内存占用较轻(~60-70 MB),而那些Java EE服务器的内存占用高达数百兆。对于简单的web应用程序,或者使用Spring等不需要完整Java EE服务器的框架的应用程序,Tomcat非常流行。Tomcat服务器的管理可以说更容易,因为移动的部分更少。

然而,对于那些确实需要完整的Java EE堆栈(或者至少需要更多可以轻松绑定到Tomcat的组件)的应用程序……JBoss和GlassFish是两个最流行的开源产品(第三个是Apache Geronimo,在此基础上构建了IBM WebSphere的免费版本)。JBoss拥有更大更深入的用户社区和更成熟的代码库。然而,在实现当前的Java EE规范方面,JBoss明显落后于GlassFish。另外,对于那些喜欢基于gui的管理系统的人来说……GlassFish的管理控制台非常灵活,而JBoss中的大多数管理都是通过命令行和文本编辑器完成的。GlassFish直接来自Sun/Oracle,具有所有可以提供的优势。JBoss并不在Sun/Oracle的控制之下,它拥有所有可以提供的优势。

JBoss和Tomcat都是Java servlet应用服务器,但JBoss的功能远不止这些。两者之间的实质区别是JBoss提供了完整的Java企业版(Java EE)堆栈,包括企业JavaBeans和许多其他技术,这些技术对于开发企业Java应用程序的开发人员非常有用。

Tomcat的限制要大得多。可以这样想,JBoss是一个包含servlet容器和web服务器的Java EE堆栈,而Tomcat在很大程度上是一个servlet容器和web服务器。

JBoss和Glassfish基本上是完整的Java EE应用服务器,而Tomcat只是一个Servlet容器。 JBoss、Glassfish以及WebSphere、WebLogic等等与Tomcat和Jetty之间的主要区别在于一个完整的应用服务器所提供的功能。当你有一个完整的Java EE应用服务器时,你可以受益于你所选择的所有供应商的实现,你可以受益于EJB、JTA、CDI(Java EE 6+)、JPA、JSF、JSP/Servlet等等。而对于Tomcat,你只能从JSP/Servlet中获益。然而,今天有了像Spring和Guice这样的高级框架,使用全堆栈应用服务器的许多主要优势都可以被缓解,并且有了Spring生态系统的一个框架的假设,你可以从许多子项目中受益,在我的工作经验中,让我放弃使用全堆栈应用服务器,而选择像tomcat这样的轻量级应用服务器
你应该使用GlassFish for Java EE企业应用程序。 一些需要考虑的事情:

A web服务器意思是:处理HTTP请求(通常是从 浏览器)。< / em > < / p >

A Servlet容器(例如Tomcat)表示:它可以处理 servlet,JSP。< / em > < / p >

一个应用程序服务器(例如GlassFish)意味着:*它可以管理 Java EE应用程序(通常包括servlet/JSP和ejb)


Tomcat -由Apache社区运行-开源,有两种风格:

  1. Tomcat - Web配置文件 -轻量级,只是servlet容器,不支持Java EE特性,如EJB, JMS等。
  2. Tomcat EE -这是一个经过认证的Java EE容器,它支持所有Java EE技术。

没有商业支持(只有社区支持)

JBoss -由RedHat运行 这是对JavaEE的全栈支持,它是经过认证的JavaEE容器。 这在内部包括Tomcat作为web容器。 这也有两种风格:

  1. 社区版本称为应用程序服务器(AS) -这将只有社区支持。
  2. 企业应用服务器(EAP) -为此,你可以有一个基于订阅的许可证(这是基于你的服务器上的核心数量)。

Glassfish - Oracle运行 这也是一个全栈认证的Java EE容器。它有自己的web容器(不是Tomcat)。 这是由甲骨文自己决定的,所以所有的新规格都将首先用Glassfish进行测试和实现。所以,它总是支持最新的规范。我不知道它的支持模型

Apache tomcat只是一个serverlet容器,它不支持企业Java应用程序(JEE)。JBoss和Glassfish支持JEE应用程序,但Glassfish比JBoss服务器重得多:参考幻灯片

当您阅读这些答案时,使用Tomcat似乎有点令人沮丧。然而,大多数人没有提到的是,您可以使用tomcat获得相同或几乎相同的用例,但这需要您添加所需的库(通过Maven或您使用的任何包含系统)。

我一直在用非常小的配置工作运行tomcat和JPA、ejb。