为什么Jboss比Tomcat“更好”?

时间:2010-09-09 00:07:57

标签: java tomcat6 jboss5.x

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

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

提前致谢

7 个答案:

答案 0 :(得分:67)

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

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

说使用JBoss时得到的只是EJB和JMS,这有点不公平。 JBoss提供许多服务和功能,包括:

  • Servlet / JSP容器
  • JNDI
  • EJB
  • JTA
  • 聚类
  • 缓存
  • JMS
  • 数据源/资源管理
  • JMX集成
  • OSGi支持
  • 网络服务
  • 门户
  • Web Beans(Seam)
  • 某些管理控制台
  • IoC容器

吸引许多建筑师加入JBoss的是它的灵活性。它使用插件架构,允许您添加和删除服务。正如其他人所说,在使用Tomcat作为其Servlet容器时,你可以将JBoss简化为几乎只是Tomcat服务器的地方。这样做有什么好处?如果您认为自己将使用JBoss的其他功能,那么将来会进行验证。

JBoss中的这些服务经过预先集成,力求提供一致的部署模型,最大限度地减少您编写应用程序逻辑或配置以自行集成它们的工作量。话虽如此,像Spring这样的其他框架在支持统一集成许多流行库和框架的方法方面也做得很好。但由于他们专注于集成第三方库,因此服务之间的互操作性取决于您。由于JBoss正在构建服务和集成平台,因此他们花时间开发(并提供支持)互操作性。

做出选择时要问的一些问题是:

  • 您打算使用像EJB这样的标准JavaEE架构组件吗?
    • BTW,EJB可以使用JBoss嵌入式容器在独立的Tomcat中运行,所以如果你正在使用EJB,那么你仍然不必使用JBoss
  • 您打算使用Web Services,Portals,JMS吗?
  • 您是否正在考虑使用Web Bean或Seam进行构建?
  • 您的IT,支持和开发人员目前使用哪些部署平台(Tomcat,JBoss等)?如果您打算使用新的东西,那么学习新平台会产生额外的费用。
  • 如果您正在销售客户将部署的产品,那么它将对客户的IT组织产生什么影响。
  • 您是否需要付费支持?
    • 您可以通过许多公司(包括我相信的Red Hat)找到对Tomcat的支持。
    • 你需要比较成本,因为我认为JBoss的支持并不便宜,尽管我最近没有查询价格。
  • 您需要进行任何复杂的群集吗?
    • JBoss有一些很棒的集群功能,你可能会通过Red Hat获得良好的集群支持。但是,为了完全公开,我从未与任何其他框架进行任何复杂的聚类以便能够进行比较。
  • 您是否需要高级事务管理(分布式事务,两阶段提交等)

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

答案 1 :(得分:36)

  

我目前正在开发一款新应用   发展。应用程序架构师坚持认为   我们使用JBoss5因为它“更好”。做   任何人都有更广泛的定义   “更好”(如果是这样的话)?

很有趣,因为JBOSS使用Tomcat作为其servlet / JSP引擎。

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

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

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

当他们上次写Powerpoint幻灯片或UML文档以外的内容时,我会询问你的应用程序。回应可能会让你感到惊讶。

答案 2 :(得分:15)

JBoss是Application Server,而Tomcat是Servlet container

因此,JBoss在包含它的意义上可能比Tomcat更好,还有其他组件。而已。

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

这取决于你的建筑师可能还有别的想法。

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

答案 3 :(得分:6)

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

答案 4 :(得分:5)

正如@duffymo指出的那样,JBoss使用Tomcat作为其Web容器,因此如果我们比较相同的东西(即Tomcat和JBoss的Web容器部分),更好没有多大意义。如果你不打算使用JTA,EJB,JMS,JMX等,那么使用JBoss没有什么优势,特别是在开发过程中(Tomcat更轻,启动速度更快,开发团队经常会对此感兴趣)。

在某些情况下,您可能更喜欢使用JBoss 进行生产(我仍然假设您没有使用EJB等):

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

但我不确定这是应用程序架构师的意思。我会尝试与建筑师讨论这个选择,也许他有理由解释。如果真的必须在生产中使用JBoss,那么在开发过程中你总是可以使用Tomcat或Jetty。

答案 5 :(得分:2)

如果您使用JBoss,您可以向Jboss.org支付费用。但是Tomcat不是这样的。

这是事实,但是RedHat(谁收购了Jboss.org)将要求你改为他们支持的JBoss版本之一

答案 6 :(得分:1)

JBoss符合J2EE规范,它非常支持J2EE规范,例如EJB,JTA,JMS,JNDI等.Tomcat只是一个servlet容器,虽然它也支持一点J2ee规范。当你想使用J2EE组件时,你应该首先考虑JBoss。

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