为什么Jboss比Tomcat"更好"?

Che*_*ech 43 java tomcat6 jboss5.x

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

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

提前致谢

Jav*_*mae 68

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

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

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

  • Servlet/JSP容器
  • JNDI
  • EJB
  • JTA
  • 集群
  • 高速缓存
  • JMS
  • 数据源/资源管理
  • JMX集成
  • OSGi支持
  • 网页服务
  • 门户
  • Web豆(Seam)
  • 一些行政控制台
  • 一个IoC容器
  • 等等

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

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

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

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

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

  • 这似乎应该是一个问题,但mod_jk和mod_proxy主要用于负载平衡,其中Tomcat实例不一定要彼此了解.我没有使用mod_cluster,所以我必须研究.JBoss提供了复制的缓存,JNDI集群,会话bean集群,HTTP会话复制,JPA/Hibernate二级缓存复制,服务单例(服务只在一台服务器上运行,但可以进行故障转移),以及其他一些东西. (2认同)
  • "要说任何工具或框架只是'更好'是荒谬的." 我同意100%的声明.也就是说,当被迫在工具之间进行选择时,总是要用锤子.没有足够大的锤子无法解决的问题. (2认同)

duf*_*ymo 37

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

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

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

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

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

当他们最后一次写Powerpoint幻灯片或UML文档之外的东西时,我会问你的app arch.回应可能会让你大吃一惊.

  • 当他们最后一次写下Power Point幻灯片之外的东西时*为**所以如此真实,这几乎就像你在我的组织工作:) (7认同)
  • 有时简洁更好.取决于这本书. (5认同)
  • 那么为什么不接受答案呢?这对我们两个人来说都是好事. (2认同)

Osc*_*Ryz 15

JBoss是一个Application Server,而Tomcat是一个Servlet容器

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

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

这取决于,您的建筑师可能还有其他想法.

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


Thi*_*ilo 6

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


Pas*_*ent 5

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

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

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

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