43

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

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

提前致谢

4

7 回答 7

68

说任何工具或框架只是“更好”是荒谬的。它总是取决于情况、架构等。您不一定要使用锤子来驱动螺钉。

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

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

  • Servlet/JSP 容器
  • JNDI
  • EJB
  • JTA
  • 聚类
  • 缓存
  • 管理系统
  • 数据源/资源管理
  • JMX 集成
  • OSGi 支持
  • 网页服务
  • 门户
  • 网豆(接缝)
  • 一些管理控制台
  • 一个 IoC 容器
  • 等等

JBoss 吸引许多架构师的地方在于它的灵活性。它使用允许您添加和删除服务的插件架构。正如其他人所说,in 使用 Tomcat 作为其 Servlet 容器,因此您可以将 JBoss 缩减到实际上只是一个 Tomcat 服务器的位置。这样做有什么好处?如果您认为您将使用 JBoss 的其他功能,则可以进行未来验证。

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

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

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

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

于 2010-09-09T04:07:12.840 回答
37

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

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

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

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

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

除了 Power Point 幻灯片或 UML 文档之外,我会问你的应用程序架构是什么时候他们最后一次写东西的。答案可能会让你大吃一惊。

于 2010-09-09T00:19:02.533 回答
15

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

所以 JBoss 在它包含它以及其他组件的意义上可能比 Tomcat 更好。就是这样。

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

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

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

于 2010-09-09T01:15:59.167 回答
6

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

于 2010-09-09T01:18:18.493 回答
5

正如@duffymo 所指出的,JBoss 将Tomcat 用于其Web 容器,因此如果我们比较等价的东西(即Tomcat 和JBoss 的Web 容器部分),这并没有多大意义。如果你不打算使用 JTA、EJB、JMS、JMX 等,那么使用 JBoss 并没有真正的优势,尤其是在开发过程中(Tomcat 更轻且启动更快,这通常受到开发团队的赞赏)。

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

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

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

于 2010-09-09T01:02:46.307 回答
2

如果您使用 JBoss,您可以向 Jboss.org 付费以获得支持。但 Tomcat 并非如此。

确实如此,但是 RedHat(收购了 Jboss.org)将要求您更改为他们支持的 JBoss 版本之一

于 2010-09-09T01:36:43.790 回答
1

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

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

于 2010-09-09T01:38:03.177 回答