我目前正在开始一个新的应用程序开发。应用架构师坚持我们使用JBoss5,因为它“更好”。有没有人对“更好”有更广泛的定义(如果是这样的话)?
我有在具有大量用户负载的大型应用程序中使用Tomcat5和 6 的经验,并且它处理得很好(恕我直言)。两者都将在相同的硬件条件下在RedHat6上运行(如果实施很重要)。
提前致谢
说任何工具或框架只是“更好”是荒谬的。它总是取决于情况、架构等。您不一定要使用锤子来驱动螺钉。
我写了 JBoss in Action,所以我显然喜欢 JBoss 技术,但我会第一个说 JBoss 在许多情况下可能是矫枉过正。例如,对于我开发的最后两个站点,使用 Grails 构建并部署在独立的 Tomcat 实例上更有意义。
说使用 JBoss 时得到的只是 EJB 和 JMS 有点不公平。JBoss 提供许多服务和功能,包括:
JBoss 吸引许多架构师的地方在于它的灵活性。它使用允许您添加和删除服务的插件架构。正如其他人所说,in 使用 Tomcat 作为其 Servlet 容器,因此您可以将 JBoss 缩减到实际上只是一个 Tomcat 服务器的位置。这样做有什么好处?如果您认为您将使用 JBoss 的其他功能,则可以进行未来验证。
JBoss 中的这些服务是预先集成的,并努力提供一致的部署模型,从而最大限度地减少您编写应用程序逻辑或配置以自行集成它们的工作量。话虽如此,像 Spring 这样的其他框架在支持以统一方式集成许多流行的库和框架方面也做得很好。但由于他们专注于集成 3rd 方库,因此服务之间的互操作性取决于您。因为 JBoss 正在构建服务和集成平台,所以他们花时间开发(并提供支持)以实现互操作性。
做出选择时要问的一些问题是:
听起来不像是一个无耻的插件,但 JBoss in Action 的第一章可在 Manning 网站上免费获得。虽然我们没有在本章中直接比较 JBoss 与其他应用程序服务器和部署环境,但我们确实讨论了一些架构差异,这与您的问题相关。
我目前正在开始一个新的应用程序开发。应用架构师坚持我们使用 JBoss5,因为它“更好”。有没有人对“更好”有更广泛的定义(如果是这样的话)?
有趣,因为 JBOSS 使用 Tomcat 作为其 servlet/JSP 引擎。
听起来“更好”意味着“支持 EJB 和 JMS”,因为开箱即用的 Tomcat 两者都没有。
但如果您的应用程序不使用 EJB 或 JMS,这不是问题。
如果您确实需要它们,您可以使用 OpenEJB 和 RabbitMQ 或 ActiveMQ 将它们添加到 Tomcat。
除了 Power Point 幻灯片或 UML 文档之外,我会问你的应用程序架构是什么时候他们最后一次写东西的。答案可能会让你大吃一惊。
JBoss 是应用程序服务器,而 Tomcat 是Servlet 容器
所以 JBoss 在它包含它以及其他组件的意义上可能比 Tomcat 更好。就是这样。
如果您不打算使用这些其他组件,那么您就是在浪费资源。如果您需要那些其他组件,那么 Tomcat 是不够的。
这取决于,可能你的建筑师有别的想法。
我不知道如果你直接问他,他会怎么说?
这不是更好,只是更多。JBoss 包括 Tomcat。
正如@duffymo 所指出的,JBoss 将Tomcat 用于其Web 容器,因此如果我们比较等价的东西(即Tomcat 和JBoss 的Web 容器部分),这并没有多大意义。如果你不打算使用 JTA、EJB、JMS、JMX 等,那么使用 JBoss 并没有真正的优势,尤其是在开发过程中(Tomcat 更轻且启动更快,这通常受到开发团队的赞赏)。
在某些情况下,您可能更喜欢 JBoss进行生产(我仍然假设您没有使用 EJB 等):
但我不确定这是应用架构师的意思。我会尝试与建筑师讨论这个选择,也许他有一个基本解释。如果真的要在生产中使用 JBoss,那么在开发过程中您总是可以使用 Tomcat 或 Jetty。
如果您使用 JBoss,您可以向 Jboss.org 付费以获得支持。但 Tomcat 并非如此。
确实如此,但是 RedHat(收购了 Jboss.org)将要求您更改为他们支持的 JBoss 版本之一
JBoss 是符合 J2EE 规范的,它非常支持 J2EE 规范,如 EJB、JTA、JMS、JNDI 等。Tomcat 只是一个 servlet 容器,虽然它也支持一点 J2ee 规范。当你想使用 J2EE 组件时,你应该首先考虑 JBoss。
忘了一点,JBoss 对 JMX 的支持非常好,尤其是在 4.* 版本中。我经历过一个项目,它没有 Web UI,JBoss 仅用作平台和 EJB 容器,用于集成所有使用 MBean 的独立应用程序。