当前位置: 首页 > 面试题库 >

JBoss vs Tomcat再次[关闭]

田玉韵
2023-03-14
问题内容

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。

7年前关闭。

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

我知道Tomcat只是一个servlet引擎,而JBoss提供了许多现成的功能,但是我无法理解的是为什么在某些情况下Tomcat比jboss更好用。我在某处读到JBoss具有可插拔的体系结构,如果需要,您可以从JBoss拔出功能,使其本质上成为一个tomcat
servlet容器。如果真是这样,那么这样做不是代替Tomcat而是更好,以便留出一些东西来插回去。

我发现支持Tomcat的另一种解释是它是轻量级的,这意味着更少的内存需求,还是也允许更快的响应。再次,我需要知道jboss不会按要求加载组件,即如果我仅使用servlet,那么jboss不会跳过其余功能并自动变得轻量级。

本质上,我的应用程序没有任何Java EE功能,但是由于上述原因,支持Tomcat的“轻量级”参数听起来不足以令人信服。

请帮忙。

编辑:我们终于决定在那时使用tomcat,并且我们已经使用6个月以上了,并且非常易于使用。实际上,我们发现了一些实际用途,可以很容易地在同一台服务器上为不同的开发人员运行多个tomcat实例,而使用jboss可能很难做到这一点。

我发现tomcat为我们的工作省力,因此当您不使用太多Java
EE功能时,它可能是正确的选择。PS:请注意,我们仍将Spring和Hibernate与Tomcat一起使用


问题答案:

首先是事实,也不是 更好的 。如您已经提到的,Tomcat提供了一个支持Servlet规范的Servlet容器(Tomcat 7支持Servlet
3.0)。JBoss AS是一个“完整”的应用程序服务器,当前版本支持Java EE 6(包括Servlet 3.0)。

Tomcat非常轻巧,如果您需要Servlet API以外的某些Java
EE功能,则可以通过在应用程序中提供所需的库来轻松增强Tomcat。例如,如果您需要JPA功能,则可以包括Hibernate或OpenEJB,而JPA
几乎是 开箱即用的。

如何决定使用Tomcat还是全栈Java EE应用程序服务器:

启动项目时,您应该了解它的要求。如果您在大型企业环境中,JBoss(或任何其他Java EE服务器)可能是正确的选择,因为它提供了对以下各项的内置支持:

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

我认为 Tomcat非常适合以Web为中心,面向用户的应用程序。如果后端集成开始发挥作用,则应(至少)考虑使用Java
EE应用服务器。最后但并非最不重要的一点是,将为Tomcat开发的WAR迁移到JBoss应该是1天的练习。

其次,您还应该考虑环境内部的使用情况。如果您的组织已经运行了1,000个JBoss实例,那么无论您有何具体要求(考虑运营成本或技能提升等方面),您都可以始终使用它。当然,反之亦然。

我的2分



 类似资料:
  • 问题内容: 我的警报消息有问题。它正常显示,当用户按下(关闭)时,我可以将其关闭,但是当用户尝试再次显示它(例如,单击按钮事件)时,它不会显示。(此外,如果我将此警报消息打印到控制台,则等于。)我的代码在这里: 事件: PS! 仅在发生某些事件(例如,单击按钮)后才需要显示警报消息。还是我做错了什么? 问题答案: 数据删除会完全删除该元素。请改用jQuery的.hide()方法。 快速修复方法:

  • 问题内容: 下面显示的以下代码会将3个JLabel添加到JFrame中,然后删除3个JLabel。2秒后,它将重新绘制3个JLabel。 我面临的一个小问题是,它正在重新绘制到新的frame(frameTwo)而不是旧的frame(frameOne)。 如何使它重新绘制现有框架而不是重新绘制到新框架? 问题答案: Simpy使用CardLayout来交换视图。 请使用Swing计时器,而不要使用当

  • 问题内容: 可能是我正在分裂头发,但我想知道以下情况: 最好使用哪个? 我最好的意思是 任何方式 。 阅读这些内容后,其他帖子说案例3并不是最佳性能,其他案例1会以案例3结束,依此类推。 更具体。 例如,搁置一旁,如果必须维护他的代码,哪种风格更适合从其他程序员那里看到呢? 还是您认为哪种编程更有效? 否则您会认为速度更快等。 我不知道该如何表达。 像案例3这样的答案可能会更快,但是绝大多数程序员

  • 这是qt-pyside-savegeometry()saveState()的后续问题 null 这种方法适用于所有停靠窗口的停靠位置。它也可以很好地工作在浮动位置的未对接的窗口,只要窗口是未对接的出口。 当用户在会话内根据他们的需要裁剪浮动窗口的位置时,停靠和重新浮动窗口使其成功地恢复用户的首选位置。 然而,当用户裁剪了窗口的大小和位置,然后停靠窗口,然后退出时,问题就出现了。重新启动时,窗口不会

  • 5.8.2.再重构一次? 我们希望用户能够在不同的界面中感受到一致的体验,也希望我们自己管理代码能够更容易些——再重构一次吧。在此我们引入一个BaseActivity作为所有Activity的基类,将重用的代码提取出来。

  • 所以,我想通了摇摆工人的事情。 然而,另一个问题出现了(去图)... Swing worker实际上管理错误报告和电子邮件发送,并且电子邮件是一个长时间(超过0 . 5秒)的任务,它很方便... 为了防止我的程序在错误处理之前继续执行,我必须暂停EDT线程(用那个同步的东西)。然而,这也会暂停不确定JProgressBar的酷小动画,以及在发送消息时正在使用的动画,所以,当EDT暂停时。 我的问题

  • 可再次下载过去已下载的内容。 1. 轻触(选项)>[下载列表]。 显示可再次下载过去已下载的内容。若有使用PS3™等其它主机下载的内容,也会一并显示。 2. 选择想下载的内容后,轻触[下载]。 开始下载。若要确认下载的进度,请在按下PS键后,轻触画面右上角的最新资讯指示灯。 若要下载内容,需先将PS Vita专用存储卡插入PS Vita。 部分内容可能会因无法使用Wi-Fi与互联网连接而无法下载。

  • 我想把我的Android设备(Android4.2.2)与BluetothAdapter创建的另一个Android设备配对。startDiscovery()。我在运行BluetoothDevice时发现了什么。connect()请求配对开始。但我在运行connect()时遇到了问题 我在中尝试了impliment fallback和gatclass方法 IOException:读取失败,套接字可能