JBoss 对雄猫

这似乎是一个古老的问题(它是:) ,在 Tomcat 和 JBoss 之间哪个服务器更好,但是我还没有找到一个足够好的答案来解决我的问题。

我知道 Tomcat 只是一个 servlet 引擎,而 JBoss 提供了更多现成的功能,但是我不能理解的是为什么 Tomcat 在某些情况下比 JBoss 更适合使用。 我在哪里读到过 JBoss 有一个可插入的体系结构,如果需要的话,您可以从 JBoss 中断开某些特性,使其本质上成为一个 tomcat servlet 容器。如果是这样的话,那么与其使用 Tomcat,不如这样做,以便留出将事情插回去的余地。

我发现对 Tomcat 有利的另一个解释是,它是轻量级的,这是否意味着更少的内存需求,或者这也允许更快的响应。同样,我需要知道 jboss 不会根据需要加载组件,也就是说,如果我只使用 servlet,那么 jboss 不会跳过其余的特性,自动变得轻量级。

基本上,我的应用程序没有任何 JavaEE 特性,但是由于上述原因,支持 Tomcat 的“轻量级”论点听起来不够令人信服。

请帮帮我。

编辑: 当时我们最终决定使用 tomcat,现在我们已经使用它超过6个月了,使用起来非常方便。事实上,我们发现了一些实际的用途,我们可以很容易地在同一台服务器上为不同的开发人员运行多个 tomcat 实例,对于 jboss 来说同样的情况可能非常困难。

我发现 tomcat 对于我们的工作来说是免费的,因此当您没有使用很多 JavaEE 特性时,它可能是正确的选择。 PS: 请注意,我们仍然在 Tomcat 中使用 Spring 和 Hibernate

161629 次浏览

严格地说,由于没有 JavaEE 特性,你的应用程序几乎不需要应用服务器; -)

就像其他人指出的那样,JBoss 有一个(或多或少)完整的 JavaEE 堆栈,而 Tomcat 仅仅是一个 web 容器。JBoss 也可以被配置为只作为一个 webContainer,然后它只是包含的 tomcat webContainer 的一个薄包装器。这样,您就可以拥有一个几乎同样轻量级的 JBoss,它实际上只是 Tomcat 的一个薄“包装”。那也差不多是轻量级的。

如果您不需要 JBoss 提供的任何额外功能,那么就选择您最喜欢的那个。哪一个是最容易配置和维护的?

首先是事实,好多了也不是。如前所述,Tomcat 提供了一个支持 Servlet 规范的 Servlet 容器(Tomcat 7支持 Servlet 3.0)。JBoss AS 是一个“完整”的应用服务器,它在当前版本中支持 Java EE 6(包括 Servlet 3.0)。

Tomcat 是相当轻量级的,如果您需要 Servlet API 之外的某些 JavaEE 特性,可以通过提供所需的库作为应用程序的一部分来轻松地增强 Tomcat。例如,如果需要 JPA 特性,可以包括 Hibernate 或 OpenEJB,JPA 可以开箱即用地使用 差不多

如何决定是使用 Tomcat 还是使用完整堆栈的 Java EE应用程序服务器:

当你开始你的项目时,你应该知道它需要什么。如果您在一个大型企业环境中,那么 JBoss (或任何其他 JavaEE 服务器)可能是正确的选择,因为它提供了内置的支持,例如:

  1. 用于异步集成的 JMS 消息传递
  2. Web 服务引擎(JAX-WS 和/或 JAX-RS)
  3. 管理功能,如 JMX 和脚本管理界面
  4. 高级安全性,例如与第三方目录的开箱即用集成
  5. EAR 文件而不是“仅”支持 WAR 文件
  6. 所有其他我不记得的“伟大的”JavaEE 特性: -)

在我看来,Tomcat 是一个非常适合以网络为中心,面向用户的应用程序。如果需要进行后端集成,那么(至少)应该考虑 JavaEE 应用程序服务器。最后但并非最不重要的是,将为 Tomcat 开发的 WAR 迁移到 JBoss 应该是一个为期一天的练习。

其次,您还应该考虑环境内部的使用情况。如果您的组织已经运行了比如1,000个 JBoss 实例,那么您可能总是不考虑具体的需求(考虑诸如操作成本或提高技能等方面)。当然,反之亦然。

我的2分钱

我还了解到,对于某些服务器,例如,只需要注释持久化上下文,但是在某些服务器中,注入应该手动完成。

看看 托米

它具有构建完整 JavaEE 应用程序所需的所有特性。

我当然希望使用 TomEE,因为其背后的想法是让 Tomcat 带来默认情况下缺失的所有 JavaEE6集成。这是一种很好的妥协