2012-09-18 165 views
5

我對Java EE web應用程序有一些部署模型問題。目前,我們正在將我們的Web應用程序作爲WAR文件中的WAR文件部署。所有內容都與WAR文件一起打包,包括靜態內容(如圖像,靜態html頁面等)。但是我想將這些靜態內容部署到HTTP服務器中,並僅使用應用程序服務器來檢索動態內容。我如何分割這些東西?有沒有人做過這種事情,並且對我的場景有一個很好的部署模型。幫助將不勝感激。如何在java web應用程序中使用http服務器和應用程序服務器

這是個好主意,以2 WAR文件一個只有靜態內容和部署HTTP服務器WAR,其餘爲不同的WAR文件,並在應用服務器上部署了嗎?但是,這種方法會影響靜態內容當前被引用的所有頁面,並且需要更改代碼,這非常麻煩,因爲我們的項目非常龐大,代碼基礎非常龐大。

任何戰略和想法,歡迎。

+0

爲什麼要拆分靜態和動態內容?這是組織考慮還是你想提高性能? –

+0

感謝您的意見,我感謝每一位的評論。好的學習曲線對我來說。 我想同時使用HTTP服務器和應用程序服務器來改善我的Web應用程序的性能。我一直在讀一本名爲「Java™網站性能分析」的書。並建議我將我的靜態內容放入HTTP服務器和Dynamic server中的Dynamic內容。但我不知道如何切實做到這一點。我所知道的是如何構建WAR文件並在Tomcat中部署,這是我們用於部署的App服務器。 –

+0

所以我的問題可以修改如下。 如何在HTTP服務器中部署我的靜態內容?如果我在這方面得到了一些幫助,那麼我可以繼續並從WAR文件中刪除所有靜態內容,並將其部署到HTTP服務器以及應用程序服務器中WAR內的其餘文件。 –

回答

1

這可能是一些有趣的性能理由這樣做。

你應該有獨立的部署腳本/部署文件來做到這一點。 爲一個項目部署多個文件/ WAR /文件夾/腳本不是問題。當您必須部署WAR並更新數據庫時,我們也有同樣的事情。

我想有一個WAR文件和文件夾與您的靜態內容進行部署。


編輯

部署在HTTP服務器的靜態內容取決於服務器。 如果要在Linux服務器上使用Apache,則必須設置Virtual Host

<VirtualHost *:80> 
    # This first-listed virtual host is also the default for *:80 
    ServerName www.example.com 
    DocumentRoot /www/domain 
</VirtualHost> 

在這個例子中,你有一個偵聽80端口,任何IP地址和服務器名稱www.example.com的虛擬主機。然後將其重定向到/www/domain路徑。

您將在文檔中找到更多示例和配置選項。

+0

如何將我的靜態內容部署到HTTP服務器中?如果我在這方面得到了一些幫助,那麼我可以繼續並從WAR文件中刪除所有靜態內容,並將其部署到HTTP服務器以及應用程序服務器中WAR內的其餘文件。 –

0

您可以WAR文件不是被部署到HTTP服務器。 A WAR用於Java Web應用程序,它必須部署到應用程序服務器或servlet容器(如Tomcat)。我不認爲在單獨的Web應用程序中分離靜態內容是一個好主意。如果這是一個項目應該是一個Web應用程序,除了:

WAR文件有一個特殊的文件夾結構,除了包含JSP頁面,Java servlet爲,Java類,HTML頁面等 特殊文件 它們組合起來形成一個Web應用

您可以在一個應用程序中保留您的靜態內容,實在沒有什麼不好的。

如果你的項目是非常巨大的,有很多文件,這是沒有問題的,你只需要使用項目結構這樣,它應該是很容易理解的,可讀和應用程序服務器或servlet容器會照顧部署儘可能多的內容。

+0

我感謝您的輸入......但我的要求是將我的靜態內容部署到HTTP服務器中,以提高我的Web應用程序的性能。我不確定如何在HTTP服務器中捆綁和部署靜態內容,並在部署在Tomcat容器上的WAR文件內部從JSP訪問它。對此的任何幫助將會很棒... –

0

直到第4版,Tomcat在提供靜態內容方面一直很慢。這就是爲什麼它經常被推薦從靜態內容中分離動態並使用普通的Web服務器爲後者服務(你提到的這本書是在2002年發佈的......)。最近的Tomcat版本不會遇到這個問題,因此你可以避免分裂,這對組織和安全來說都是一場噩夢。

對於靜態資源,您可能更關注配置適當的緩存,因此它們不會被傳輸得比所需的次數多。

+0

是的緩存是我想看的另一個領域。事實上,我們已經開始尋找經常使用的主表相關查詢和一些緩存方法。一種方法是在Web應用程序啓動時將這些查詢的結果加載到內存中並使用它。一個問題是在主表數據更改時刷新內存中的東西......但是會分別查看這個緩存問題......只是想分享一下我們也在研究這方面的內容...... –

+0

從db緩存數據是一個不同的問題 - 我的意思是爲Web服務器中的靜態資源設置緩存頭,因此瀏覽器只會獲取一次。 –

相關問題