2009-11-30 56 views
6

最近我一直在閱讀/學習更多關於Spring的知識,以及如何將Spring與其他開源工具(如Tomcat和Hibernate)結合使用。我正在評估Spring MVC是否可能成爲我工作的項目的一種可能的替代技術,該項目使用WebLogic和大量定製的Java EE代碼。事情是,我一直懷疑我們的解決方案是過度設計的,並且比想要的更復雜。令人驚訝的是,它是2009年,但是,我們正在編寫自己的事務處理和線程池類。如果你知道我的意思,它不像我們亞馬遜,易趣或谷歌。因此,我正在調查一個「更簡單更好」的選擇。Spring + Tomcat何時不夠強大?

所以,這裏是我的問題:我想聽聽你如何決定一個完整的Java EE應用程序服務器是否必要的意見。您如何「測量」Java EE應用程序的大小/負載/需求?併發用戶數量?每日總交易量?在投降之前,應用程序需要獲得多大的「重量」,並說「好的,Tomcat不會削減它,我們需要JBoss/WebLogic/WebSphere」?

回答

9

我不認爲使用全功能Java EE服務器的決定應該基於用戶數量或事務數量。相反,它應該基於您是否需要該功能。

在我目前的項目中,我們實際上正在從JBoss轉移到vanilla Tomcat,因爲我們意識到我們沒有使用任何超出基本servlet的Java EE功能。然而,我們正在使用Spring。在Spring的基本對象管理,事務處理和JDBC功能之間,我們沒有看到對EJB的迫切需求。我們目前使用Struts 2而不是Spring的MVC,但我聽說過很棒的事情。無論如何,Spring很好地集成了許多Java Web框架。

+0

所以這聽起來像我應該擔心的功能,而不是服務器加載。這有很大幫助!我們的應用程序實際上使用會話Bean,並且我看到它們是使用完整的J2EE容器的有效理由,並且可能支持消息傳遞。我們是否真的需要這些東西是另一天的思考。 – pbailey19 2009-12-03 14:41:39

1

Google開源了很多他們的代碼。如果你自己寫低層次的東西,而不是實現已經寫好的代碼,那麼你通常會解決問題。

回到實際問題,Walmart.com,etrade.com,The Weather Channel和quite a few others只是使用Tomcat。來自IBM的營銷和銷售人員可能會讓你相信不同,但是Tomcat沒有上限。

除了EJB,我不確定Tomcat缺少什麼,我也不是EJB的粉絲。

4

Spring不會嘗試替換JavaEE規範的某些高級部分,例如JMS和JTA。相反,它建立在這些基礎之上,使它們符合「春天的方式」,並且通常使它們更易於使用。

如果您的應用程序需要類似JMS和JTA的強大功能,那麼您可以通過Spring輕鬆使用它們。這不是問題。

+2

您仍然可以通過第三方JMS提供程序(如Active MQ)將Tomcat與JMS一起使用。但是,上次我檢查(大約2年前),通過開源的JTA對Tomcat的支持是不可接受的。如果您需要進行兩階段提交,那麼您肯定需要一個完整的J2EE服務器。 – 2009-11-30 20:25:03

+0

但您是否需要Tomcat來集成/支持基於JTA的事務管理器?難道你不能在Spring應用程序中使用Atomikos或JBoss TM之類的東西,而不關心容器集成嗎? – SteveD 2009-12-01 12:22:58

1

除了Java EE更奇特的元素之外,tomcat沒有提供的是會話bean(又名EJB)。會話bean允許您高效地隔離處理。所以你可以在前端有一個盒子,另一個用於會話bean(業務邏輯),另一個用於數據庫。

你會想至少有兩個原因這樣做:

  1. 性能;你發現處理所有事情的一個盒子太多了。將不同的圖層分離到不同的盒子上將允許您擴展。會話bean也可以在更細粒度的級別上進行負載平衡。 Tomcat和其他這種流行的網絡服務沒有開箱即用的集羣。
  2. 靈活性;現在你已經將業務邏輯轉移到自己的環境中,你可以開發一個使用同一層的備用前端,但是,例如,它是一個厚客戶端前端。或者也許其他上下文想要使用會話bean。

雖然我應該指出,如果你使用web服務與中間層進行通信,它也可能在tomcat上!

1

使用一個完全成熟的Java EE服務器的唯一原因是,如果你需要分佈式XA事務,如果你不需要XA事務,那麼你可以使用Spring + JPA + Tomcat + Bean驗證+ JSTL + EL + JSP + Java Mail。

另外一個Java EE服務器應該實現JMS,但在與應用程序服務器的其餘部分相同的VM中運行JMS服務器沒有意義,所以如果您需要JMS,則應該有一個單獨的JMS服務器。

1

我強烈不同意這裏給出的所有答案。

一切都可以添加到Tomcat,包括EJB,CDI,JTA,Bean驗證,JAX-RS等

這樣的問題:你要嗎?你是否想將所有這些依賴關係組裝成正確的版本,並測試它們是否一起工作,而其他人已經這樣做了?

讓我們清楚:沒有人只使用雄貓!每個人都會添加一個web框架,一個ioc容器,一個orm,一個事務管理器,web服務等等等等。像TomEE這樣的輕量Java EE服務器已經包含了所有這些,並且提供了所有這些東西集成的完整體驗好多了。