Tomcat,JBoss和Glassfish有什么区别?

时间:2010-09-29 12:41:30

标签: java tomcat jboss glassfish enterprise

我开始研究Enterprise Java,我所关注的书中提到它将使用JBoss。 Netbeans随Glassfish一起发货。我过去使用过Tomcat。

这三个程序有什么区别?

8 个答案:

答案 0 :(得分:501)

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

答案 1 :(得分:347)

Tomcat仅仅是一个HTTP服务器和Java servlet容器。 JBoss和GlassFish是完整的Java EE应用服务器,包括EJB容器和该堆栈的所有其他功能。另一方面,Tomcat的内存占用量较小(约60-70 MB),而那些Java EE服务器的内存占用数百兆。 Tomcat非常适用于简单的Web应用程序,或者使用Spring等不需要完整Java EE服务器的框架的应用程序。 Tomcat服务器的管理可以说更容易,因为移动部件更少。

但是,对于需要完整Java EE堆栈的应用程序(或者至少可以更容易地连接到Tomcat的更多部分)... JBoss和GlassFish是两种最受欢迎​​的开源产品(第三种)是Apache Geronimo,在其上构建了免费版本的IBM WebSphere。 JBoss拥有更大更深的用户社区,以及更成熟的代码库。但是,JBoss在实现当前Java EE规范方面落后于GlassFish。此外,对于那些喜欢基于GUI的管理系统的人... GlassFish的管理控制台非常灵活,而JBoss中的大多数管理都是使用命令行和文本编辑器完成的。 GlassFish直接来自Sun / Oracle,具有可提供的所有优势。 JBoss不受Sun / Oracle的控制,具有可提供的所有优势。

答案 2 :(得分:73)

您应该使用 GlassFish for Java EE企业应用程序 。 有些事情需要考虑:

  

Web服务器表示:处理HTTP请求(通常来自   浏览器)。

     

Servlet容器(例如 Tomcat )表示:它可以处理   servlets& JSP。

     

Application Server (例如 GlassFish )表示:*可以管理   Java EE应用程序(通常是servlet / JSP和EJB)。

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

  1. Tomcat - Web配置文件 - 轻量级,它只是servlet容器,不支持EJB,JMS等Java EE功能。
  2. Tomcat EE - 这是一个经过认证的Java EE容器,它支持所有Java EE技术。
  3. 没有商业支持(仅限社区支持)

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

    1. 名为Application Server(AS)的社区版 - 这只有社区支持。
    2. 企业应用服务器(EAP) - 为此,您可以拥有基于订阅的许可证(它基于您服务器上的核心数量。)
    3. Glassfish - 由Oracle运营 这也是一个经过完整堆栈认证的Java EE容器。它有自己的Web容器(不是Tomcat)。 这来自Oracle本身,因此所有新规范将首先使用Glassfish进行测试和实施。所以,它总是支持最新规范。我不知道它的支持模式。

答案 3 :(得分:13)

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

答案 4 :(得分:6)

JBoss和Glassfish基本上是完整的Java EE Application Server,而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 Ecosystem的男子气概,您可以受益于许多子项目,在我的工作经验让我离开使用完整的堆栈应用程序服务器,支持像tomcat这样的轻量级应用程序服务器。

答案 5 :(得分:6)

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

我一直在运行带有JPA的tomcat,配置工作量非常小的EJB。

答案 6 :(得分:3)

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

Tomcat更受限制。一种思考方式是JBoss是一个包含servlet容器和Web服务器的Java EE堆栈,而Tomcat大部分是一个servlet容器和Web服务器。

答案 7 :(得分:2)

Apache tomcat只是一个不支持Enterprise Java应用程序(JEE)的serverlet容器。 JBoss和Glassfish支持JEE应用程序,但Glassfish比JBOSS服务器重得多:Reference Slide