2011-08-23 70 views
1

我有一個web應用程序,它目前使用外部目錄來託管Spring webapp中的靜態文件,例如css,velocity。也就是說,該目錄在tomcat的webapp目錄內,但不在WAR內。用於戰爭部署的外部和內部資源,例如Tomcat

除了無需輕鬆編輯這些資源而無需重新編譯打包部署的功能,在戰爭中不包括這些文件還有什麼好處。

我似乎記得被告知長時間AGO Tomcat在提供文件靜態文件方面表現不佳,但我沒有任何經驗支持這一點。據我所知,唯一的優點是易於編輯。

+0

你是什麼意思的'外部目錄'?你是否已經有了一個Web服務器(如Apache HTTP Server)來提供這些靜態文件? – home

+0

當前的設置是Apache HTTPd和通常連接到Tomcat的連接器。外部資源目錄與未爆炸的WAR位於相同的文件夾中。在我的理想世界中,我只是有Tomcat和戰爭,但我很好奇目前的配置是否有任何優勢,除了輕鬆編輯css/html/velocity/etc – SilentICE

回答

0

通常,在應用程序服務器圖案前面的web服務器仍然是有效的:

  1. web服務器提供TLS/SSL終止;客戶端通過HTTPS與您的URL通信,Web服務器終止SSL並將純HTTP消息轉發到您的應用服務器(tomcat)。在這種情況下的Web服務器可以接管所造成的加密(CPU利用率)
  2. Web服務器提供靜態內容的負荷;當涉及到大量靜態內容的高流量站點或站點時,web服務器可以提供靜態內容。想象一下提供包含高分辨率圖像(比如> 1m)的產品目錄的應用程序。直接從應用程序服務器下載圖像需要在應用程序服務器上有一個線程。它還可以減少應用程序服務器節點上的網絡I/O。
  3. web服務器在非軍事區(DMZ);這是企業部署中的一種常見模式。 網絡服務器託管在公衆可以使用的區域中,而您的應用程序服務器僅託管在網絡服務器可用的內部區域中。這引入了另一層安全性。
  4. web服務器提供靜態緩存; web服務器像Apache在緩存方面表現不錯。

毫無疑問,這取決於你的使用情況下,它可能會有所不同:

  1. 你獲得的,如果你的Web服務器駐留在不同的服務器節點上,因爲它是關於計算能力上面提供的例子最具優勢( CPU在這種情況下)。
  2. 一如既往分佈式計算在這種情況下引入了一層複雜性,部署和管理。
  3. 在兩者上建立相同的安全方法,網絡服務器應用程序服務器可能變得棘手,例如,只有某些用戶被允許訪問某些圖像。

具有相同的節點上Web服務器應用服務器減少提供Web服務器的優勢。我的經驗是,當涉及到「少數用戶」使用的「較小」的內部應用程序時,Web服務器不是必需的,並且tomcat服務良好。如果您的應用只提供一些靜態文件,如圖標,cssjavascript,則更是如此。

希望這有助於...

+0

謝謝你是一個非常好的答案!因此,如果我在我的設置中正確理解應用程序服務器(tomcat)提供靜態資源而不是web應用程序,所以我沒有任何優勢(緩存,減少的內部網絡通信等),對我而言真的如此沒有超出可編輯性的理由。也許我應該考慮將靜態資源移動到Web服務器。 – SilentICE

+0

@SilentICE:我認爲這取決於。如果您的應用程序今天運行良好,則可能不需要Web服務器。如果你計劃增長或想要解決一些安全問題(DMZ),它可能是有道理的。使用['mod_jk'](http://tomcat.apache.org/connectors-doc/index.html)集成相當容易。 – home