为什么Jboss比Tomcat“更好”?

我正在开始一个新的应用程序开发。 应用架构师坚持我们使用JBoss5是因为它“更好”。 有没有人有更广泛的“更好”的定义(如果是这样的话)?

我有使用Tomcat5和6在大用户负载的大型应用程序的经验,它处理得很好(恕我直言)。 两者都将在相同的硬件条件下运行在RedHat6上(如果执行很重要)。

提前致谢

说任何工具或框架只是“更好”是荒谬的。 它总是取决于情况,build筑等。你不一定要用锤子来驱动螺丝。

我在Action中写了JBoss,所以我很喜欢JBoss技术,但是我会第一个说JBoss在许多情况下可能会过度。 例如,对于我开发的最后两个站点,使用Grails构build和部署在独立的Tomcat实例上更有意义。

有一点说不公平,比如说使用JBoss时得到的是EJB和JMS。 JBoss提供了许多服务和function,其中包括:

  • Servlet / JSP容器
  • JNDI
  • EJB
  • JTA
  • 集群
  • 高速caching
  • JMS
  • 数据源/资源pipe理
  • JMX集成
  • OSGi支持
  • 网页服务
  • 门户
  • 网豆(煤层)
  • 一些pipe理控制台
  • 一个IoC容器
  • 等等

吸引许多架构师参与JBoss的是它的灵活性。 它使用一个插件架构,允许您添加和删除服务。 正如其他人所说,在使用Tomcat作为它的Servlet容器,所以你可以从字面上减lessJBoss到实际上只是一个Tomcat服务器的地方。 这样做的好处是什么? 如果您认为您将要使用JBoss的其他function,那么将来就是一个明证。

JBoss中的这些服务是预先集成的,并努力提供一个一致的部署模型,最大限度地减less您编写应用程序逻辑或configuration时自己整合的工作量。 也就是说,像Spring这样的其他框架在支持整合许多stream行的图书馆和框架的统一方法方面也做得很好。 但是由于他们专注于集成第三方库,服务之间的互操作性取决于您。 因为JBoss正在构build服务和集成平台,所以他们花时间开发(并提供支持)以实现互操作性。

在做出select时要问的一些问题是:

  • 你打算使用标准的JavaEE架构组件如EJB吗?
    • 顺便说一下,EJB可以使用JBossembedded式容器在独立的Tomcat中运行,所以如果EJB是你正在使用的,那么你仍然不必使用JBoss
  • 你打算利用Web服务,门户,JMS?
  • 你正在用Web Beans或Seam来build设吗?
  • 您的IT,支持和开发人员目前使用哪些部署平台(Tomcat,JBoss等)? 如果您要使用新的东西,您将需要花费额外的费用来学习新的平台。
  • 如果您销售的是客户将部署的产品,那么它将对客户的IT组织产生什么样的影响。
  • 您是否需要付费支持?
    • 你可以通过许多公司(包括红帽,我相信)find对Tomcat的支持。
    • 您将需要比较成本,因为我不认为JBoss支持是便宜的,尽pipe我最近没有抬头看价格。
  • 你需要做任何复杂的集群?
    • JBoss有一些很棒的集群function,你可能会通过Red Hat得到很好的集群支持。 尽pipe为了全面的披露,我从来没有用任何其他框架做过任何复杂的集群来比较。
  • 您是否需要高级事务pipe理(分布式事务,两阶段提交等)

不要听起来像是一个无耻的插件,但是JBoss in Action的第一章在Manning网站上是免费的。 尽pipe我们没有在本章中对JBoss和其他应用程序服务器和部署环境进行直接比较,但是我们确实谈了一下与您的问题相关的架构差异。

我正在开始一个新的应用程序开发。 应用架构师坚持我们使用JBoss5,因为它“更好”。 有没有人有更广泛的“更好”的定义(如果是这样的话)?

有趣的是,因为JBOSS使用Tomcat作为它的servlet / JSP引擎。

听起来像“更好”意味着“支持EJB和JMS”,因为Tomcat开箱即用。

但是,如果您的应用程序不使用EJB或JMS,那不是问题。

如果你确实需要它们,你可以使用OpenEJB和RabbitMQ或ActiveMQ将它们添加到Tomcat中。

上次他们写了Power Point幻灯片或UML文档之外的东西时,我会问你的应用程序。 回应可能会让你感到惊讶。

JBoss是一个应用程序服务器,而Tomcat是一个Servlet容器

所以JBoss在包含它的意义上可能比Tomcat更好,加上其他组件。 而已。

如果你不打算使用这些其他组件,那么你正在浪费资源。 如果你需要这些其他组件,那么Tomcat是不够的。

这取决于,可能你的build筑师有其他的想法。

我想知道如果你直接问他,他会说什么?

这不是更好,只是更多。 JBoss包括Tomcat。

正如@duffymo所指出的那样,JBoss使用Tomcat作为它的web容器,所以如果我们比较一些等价的东西(比如Tomcat和JBoss的Web容器部分),那么这样做会更好 。 如果你不打算使用JTA,EJB,JMS,JMX等,使用JBoss并没有真正的优势,特别是在开发过程中(Tomcat更轻,启动速度更快,这经常被开发团队所赞赏)。

在某些情况下,您可能更喜欢JBoss 的产品,虽然(我仍然假设你不使用EJB等):

  • 生产团队经过培训或习惯在生产中使用JBoss,工具(部署,监控等)是为JBoss量身定制的。
  • 该公司有一个JBoss的支持合同(尽pipe你也可以获得对Tomcat的支持)。

但我不确定这是应用程序架构师的意思。 我会试图与build筑师讨论这个select,也许他有一个理由的解释。 如果真的需要在生产环境中使用JBoss,则可以在开发过程中始终使用Tomcat或Jetty。

如果你使用JBoss,你可以向Jboss.org支付。 但Tomcat并非如此。

不过,RedHat(买了Jboss.org)会要求你改变他们支持的JBoss版本

JBoss符合J2EE规范,它很好地支持J2EE规范,比如EJB,JTA,JMS,JNDI等。Tomcat只是一个servlet容器,尽pipe它也支持一些J2ee规范。 当你想使用J2EE组件时,你应该首先考虑JBoss。

忘了一点,JBoss支持JMX,特别是在版本4 *。 我经历过一个项目,它没有一个Web UI,JBoss只是作为一个平台和EJB容器来集成所有的独立应用程序,使用MBean。