Apache Tomcat是否真的足够Java Web应用程序?

时间:2011-08-27 14:29:39

标签: java-ee appserver

我今天通过推文发现了这篇文章:Stop Wasting Money On WebLogic, WebSphere, And JBoss Application Servers

文章以

开头
  

我不明白为什么公司在Java上花费数百万美元   应用程序服务器,如Oracle Weblogic或IBM WebSphere Application   服务器。我明白为什么公司在红帽JBoss上花钱 - 他们想要   在应用服务器上花费更少。但是,为什么要花任何东西呢?   Apache Tomcat将满足大多数Java的部署要求   网络应用程序。

继续说明原因:

  • 您需要一个支持EJB的应用程序容器。
  • 优化的应用程序服务器优化硬件
  • 两阶段提交很严重
  • 可管理性
  • 群集支持可扩展性,性能和可用性

我喜欢Tomcat并且已经开发了它,所以如果所有这些都是真的我会很高兴。但是,我没有看到很多令人信服的理由表明您根本不需要任何其他应用程序服务器。

所以,我的问题是:在什么情况下你认为你需要一个(所谓的)高级服务器,比如Weblogic / Websphere / JBoss。是否存在Websphere / Weblogic / JBoss的商业案例,或者Tomcat几乎总是这样做?

Tomcat没有/不能提供必需的吗?

3 个答案:

答案 0 :(得分:4)

文章不太正确。

Glassfish,Resin,Jboss AS,TomEE和其他一些都是开源和免费的。您无需向任何人支付使用费用。

关于EJB的部分特别无稽之谈。现在不再是2004了!目前,EJB是非常简单的轻量级 pojos 。您不需要任何重量级XML或侵入式框架继承。除此之外,它们大大简化了使用JPA的工作,并使简单的异步方法变得轻而易举。

“足够的Tomcat”中的一个很大的谎言,实际上是一个简单的Tomcat永远不够。没有一个非平凡的应用程序只在Tomcat上运行。即使是微不足道的应用程序也很难。相反,人们增加了数吨和更多的额外库。通常至少JSF,Spring,Javamail,一些JTA impl。和Hibernate。这相当于几十个罐子,用户必须确保它们都在一起工作,并且在一段时间后它们是否仍然需要它们。

通过Java EE实现,您可以在单个包中获得所需的一切。所有依赖关系已经为您完成,并且保证整体协同工作。

如果某人确实关注可用功能,但没有使用它;这是Java EE Web Profile。这是完整Java EE配置文件的一个子集,其中包含大多数Web应用程序将使用的功能:jsf,cdi,ejb(lite),jpa,jta和javamail。

Web配置文件实现可能非常小。例如,树脂为20-MB,而Tomcat为7或8 MB。然而,Resin是一个完整的堆栈解决方案,而Tomcat是一个简单的servlet容器,据说需要大量额外的库。 Web Profile实现的启动时间仅为几秒钟(Glassfish v3和JBoss AS 7在2到3秒内启动)。

答案 1 :(得分:3)

除了已经提供的所有有用信息之外,我想说很多客户愿意向提供额外支持的供应商支付额外的现金。看看IBM Websphere support。我想这对于维护关键业务应用程序非常有用。

答案 2 :(得分:2)

取决于您的应用程序需求。 Tomcat主要只是一个servlet容器,而JBoss,Websphere和其他人提供完整的Java EE支持(通常还有Java EE规范之外的其他特定于平台的特性)。

对于许多应用程序,servlet容器就足够了。特别是因为只需将适当的库捆绑为webapp的一部分,就可以获得许多类似Java EE的功能。但有时你需要这个或那个功能,只能在其中一个完整的应用服务器上使用。

也就是说,当你真正需要的只是一个servlet容器时,使用一个完整的Java EE服务器确实让我感到非常愚蠢。作为一般规则,我总是从Tomcat开始,只有在我确定需要Tomcat无法提供的东西时才会切换到类似JBoss的东西(不经常发生)。

使用在Tomcat上运行的webapp并使其在JBoss上运行真的很微不足道,所以没有理由直接跳到更复杂的平台上,如果你决定在游戏中稍后这样做,也没有真正的惩罚。 / p>

关于博客文章中提出的具体要点:

您需要一个支持EJB的应用程序容器

他是对的,你需要这个。像Spring这样的流行框架提供了与EJB相同的功能。你可以和其他人一样做,而且你通常不会同时使用两者。

优化的应用服务器优化硬件

没有评论。我个人认为,除非你的webapp正在进行大量的多媒体处理或类似的任务,否则现代硬件已经达到了足够快的速度来运行你的应用程序可能是什么,即使没有任何特殊的优化。这就是虚拟化如此重要的原因。单个服务器现在功能太强大,无法专门用于单个站点,因此我们将其划分为多个虚拟服务器,每个服务器运行自己的站点,否则所有这些计算能力都会浪费。

两阶段提交很严重

我再次不同意博客文章。两阶段提交不是严重,除非您碰巧需要它。我从来没有一次需要它。对于我曾经从事过的每个项目,具有乐观事务和回滚的数据库已经足够了。

<强>可管理

根据我作为开发人员的经验,JBoss远不如Tomcat“易于管理”。配置起来非常困难。虽然这不是文章所指的那种可管理性,但它仍然值得注意。除此之外,Java EE容器通常具有围绕服务器管理的更多内置功能,但是也有许多第三方工具可用于从Tomcat(或任何其他类型的服务器)获取类似功能。

群集支持可扩展性,性能和可用性

Tomcat支持群集,并且其可扩展性不低于其他平台。实际上,JBoss运行在Tomcat之上,所以显然Tomcat没有任何内容阻止它扩展或使其不适合用作企业级平台。