-3

我今天通过推文看到了这篇文章:停止在 WebLogic、WebSphere 和 JBoss 应用服务器上浪费金钱。

文章开头

我不明白为什么公司会在 Oracle Weblogic 或 IBM WebSphere Application Server 等 Java 应用服务器上花费数百万美元。我明白为什么公司会在 Red Hat JBoss 上花钱——他们希望在应用服务器上花更少的钱。但是,为什么要花任何东西呢?Apache Tomcat 将满足大多数 Java Web 应用程序的部署要求。

并继续给出一些理由:

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

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

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

Tomcat没有/不能提供一些重要的东西吗?

4

3 回答 3

4

这篇文章并不完全正确。

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

关于 EJB 的部分尤其是胡说八道。现在已经不是 2004 年了!如今,EJB 是非常简单的轻量级pojo。您不需要任何重量级的 XML 或侵入式框架继承。其中,它们极大地简化了 JPA 的使用,并使简单的异步方法变得轻而易举。

“Tomcat in enough”的一个大谎言是,实际上一个裸露的 Tomcat 永远不够。没有一个重要的应用程序只在 Tomcat 上运行。即使是微不足道的应用程序也很难做到这一点。相反,人们添加了大量的额外库。通常至少有 JSF、Spring、Javamail、一些 JTA impl。和休眠。这相当于几十个罐子,用户必须确保它们都一起工作,一段时间后是否仍然需要它们。

通过 Java EE 实现,您可以在一个包中获得所需的一切。所有依赖项都已经为您解决了,并且保证可以作为一个整体一起工作。

如果有人真的担心功能可用但不使用它;有 Java EE Web Profile。这是完整 Java EE 配置文件的子集,包含大多数 Web 应用程序将使用的功能:jsf、cdi、ejb (lite)、jpa、jta 和 javamail。

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

于 2011-08-27T18:53:28.793 回答
3

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

于 2011-08-27T17:14:35.373 回答
2

取决于您的应用程序需要什么。Tomcat 主要只是一个 servlet 容器,而 JBoss、Websphere 和其他提供完整的 Java EE 支持(通常加上超出 Java EE 规范的其他特定于平台的功能)。

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

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

将一个在 Tomcat 上运行的 webapp 并让它在 JBoss 上运行真的很简单,所以没有理由直接跳到更复杂的平台,如果你决定在游戏后期这样做,也没有真正的惩罚。

关于博文中提出的具体观点:

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

他是对的,你不需要这个。有一些流行的框架,如 Spring,它们提供与 EJB 相同的功能。你可以用一个和另一个一样好,通常情况下你不会同时使用两者。

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

没有意见。我个人认为,除非您的 web 应用程序正在执行繁重的多媒体处理或类似任务,否则现代硬件已经达到足以运行任何应用程序的速度,即使没有任何特殊优化。这就是虚拟化如此重要的原因。单个服务器现在功能太强大了,无法仅用于单个站点,因此我们将其划分为多个虚拟服务器,每个服务器都运行自己的站点,否则所有计算能力都会浪费掉。

两阶段提交很严重

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

可管理性

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

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

Tomcat 支持集群,并且可扩展性不亚于其他平台。事实上,JBoss 运行在 Tomcat 之上,因此显然 Tomcat 本身并没有阻止它扩展或使其不适合用作企业级平台。

于 2011-08-27T14:42:58.417 回答