Tomcat,JBoss和Glassfish有什么区别?

我正在开始研究Enterprise Java,下面的书提到它将使用JBoss。 Netbeans附带Glassfish。 我过去曾经使用过Tomcat。

这三个scheme有什么区别?

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

Tomcat只是一个HTTP服务器和Java servlet容器。 JBoss和GlassFish是成熟的Java EE应用程序服务器,包括一个EJB容器和该堆栈的所有其他function。 另一方面,Tomcat具有较轻的内存占用(〜60-70 MB),而这些Java EE服务器的重量却达几百兆。 对于简单的Web应用程序,或者使用Spring等框架的应用程序来说,Tomcat非常stream行,不需要完整的Java EE服务器。 由于移动部件较less,pipe理Tomcat服务器可以说更容易一些。

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

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

Web服务器意味着: 处理HTTP请求(通常来自浏览器)。

Servlet容器 (例如Tomcat )意味着: 它可以处理servlet和JSP。

应用程序服务器 (例如GlassFish )意味着:它可以pipe理Java EE应用程序(通常是servlet / JSP和EJB)。


Tomcat – 由Apache社区运行 – 开放源代码,有两种风格的Tomcat – Webconfiguration文件 – 轻量级,它只是servlet容器,不支持EJB,JMS等Java EE特性。Tomcat EE – 这是一个经过authentication的Java EE容器,这支持所有的Java EE技术。

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

JBoss – 由RedHat运行这是对JavaEE的完整堆栈支持,它是经过authentication的Java EE容器。 这包括内部的Tomcat作为Web容器。 这也有两种口味社区版本称为应用程序服务器(AS) – 这将只有社区支持企业应用程序服务器(EAP) – 为此,您可以有基于订阅的许可证(这是基于您的服务器上的核心数量。

Glassfish – 由Oracle运行这也是一个完整的堆栈authentication的Java EE容器。 这有它自己的Web容器(不是Tomcat)。 这来自Oracle本身,因此所有新的规格将首先通过Glassfish进行testing和实施。 所以,总是会支持最新的规范。 我不知道它的支持模式。

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

JBoss和Glassfish基本上是完整的Java EE应用服务器,而Tomcat只是一个Servlet容器。 JBoss,Glassfish之间的主要区别还有WebSphere,WebLogic等方面对于Tomcat而言也是Jetty,就是在一个完整的应用服务器提供的function上。 当您拥有一个完整的Java EE应用服务器堆栈时,您可以从您所select的供应商的所有实现中受益,而且您可以受益于EJB,JTA,CDI(JAVA EE 6+),JPA,JSF,JSP / Servlet当然等等。 另一方面,Tomcat只能从JSP / Servlet中受益。 然而,就像Spring和Guice等高级框架一样,使用全栈应用程序服务器的许多主要优点都可以减轻,并且假设这个框架与Spring Ecosystem有着天壤之别,那么你可以受益于许多子项目,在我的工作经验让我留下一个完整的堆栈应用服务器,而不是像tomcat这样的轻量级应用服务器。

JBoss和Tomcat都是Java servlet应用程序服务器,但是JBoss更多。 两者之间的巨大差异在于JBoss提供了一个完整的Java企业版(Java EE)堆栈,包括Enterprise JavaBeans和许多对于开发企业Java应用程序的开发人员非常有用的技术。

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

Apache Tomcat只是它不支持企业Java应用程序(JEE)的唯一的serverlet容器。 JBoss和Glassfish支持JEE应用程序,但Glassfish比JBOSS服务器更重要: 参考幻灯片

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

我一直在用JPA运行tomcat,EJBconfiguration很less。