2011-01-12 64 views
138

這似乎是一個古老的問題(它是:))Tomcat和JBoss之間哪個服務器更好,但我還沒有找到足夠好的答案來解決我的問題。JBoss vs Tomcat

我知道Tomcat只是一個servlet引擎,JBoss提供了更多功能,但我不明白的是爲什麼Tomcat在某些情況下比使用jboss更好。 我讀過JBoss有一個可插拔體系結構的地方,如果需要的話,你可以從JBoss中拔出特性,使其成爲一個tomcat servlet容器。如果是這樣的話,那麼這樣做不是更好的做法,而是使用Tomcat,以便讓事情恢復正常。

我發現贊成Tomcat的另一個解釋是它輕量級,這是否意味着更少的內存需求,或者這也允許更快的響應。再次,我需要知道,不會按需要加載組件,也就是說,如果我只使用servlet,那麼jboss不會跳過其餘功能並自動變爲輕量級。基本上,我的應用程序沒有任何Java EE功能,但是由於上述原因,支持Tomcat的'輕量級'參數聽起來不夠有說服力。

請幫忙。

編輯:當時我們終於決定使用tomcat,現在我們已經使用它超過6個月,現在使用起來非常方便。事實上,我們發現了一些實際的用法,我們可以很容易地在同一臺服務器上爲不同的開發人員運行多個tomcat實例,而使用jboss也可能非常困難。

我發現tomcat對於我們的工作是無憂無慮的,因此當您不使用大部分Java EE功能時可能是正確的選擇。 PS:請注意,我們仍然使用Spring和Hibernate with Tomcat

+1

呃不是JBoss與Tomcat集成? – Navi 2011-01-12 11:07:47

+4

@Navi:不是。它包含Tomcat代碼庫的分叉版本,但它有很大的分歧。 – skaffman 2011-01-12 11:10:23

回答

132

首先的事實,更好。正如您已經提到的,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是一個非常好的選擇。如果後端集成發揮作用,應該(至少)考慮一個Java EE應用服務器。最後但並非最不重要的是,將爲Tomcat開發的WAR遷移到JBoss應該是一天的練習。

其次,您還應該考慮環境內的使用情況。如果您的組織已經運行了1000個JBoss實例,那麼無論您的具體要求如何(考慮操作成本或技能提升等因素),您都可以使用該實例。當然,反之亦然。

我2%的

6

嚴格地說,沒有Java EE特性,你的應用幾乎不需要應用服務器;-)

像其他人一樣指出JBoss有一個(或多或少)完整的Java EE堆棧,而Tomcat只是一個webcontainer。 JBoss可以被配置爲只能作爲一個web容器,它只是在包含的tomcat webcontainer上的一個簡單的包裝器。這樣你就可以擁有一個幾乎與JBoss相同的輕量級JBoss,它實際上只是Tomcat的一個簡單的「包裝器」。這幾乎是輕而易舉的。

如果您不需要JBoss所提供的任何額外功能,那麼請選擇您最喜歡的那個。哪一個配置和維護最簡單?

2

我也看到,對於一些服務器中的一個,例如只需要批註的持久化上下文,但在某些服務器上,注射時應手動完成。

12

看看TOMEE

它擁有所有你需要建立一個完整的Java EE應用程序的功能。

7

我一定會期待TomEE,因爲背後的想法是讓Tomcat默認缺少所有JavaEE 6集成。這是一種非常好的折衷方案