2009-09-03 62 views
2

我們使用IBM產品並且通常使用IBM Http Servers(讀取Apache)作爲我們的應用程序服務器的反向代理。出於性能原因,我們提供來自HTTP服務器的靜態內容(.gif,.jpg,.css,.html等),以減輕應用服務器的負擔。在Java EE應用程序中分離靜態和動態內容

到目前爲止,我們必須將文件分發到http服務器並手動進行配置(最好是編寫自定義腳本)。問題是需要保持所有內容同步,特別是在需要更新應用程序時。

任何Java EE產品是否支持「開箱即用」?有沒有辦法讓應用程序服務器自動執行此操作,例如,在集羣配置中,主節點負責將應用程序分發到其他節點並保持所有內容同步。

回答

2

到目前爲止,我們必須將文件分發到HTTP服務器,並配置它手動

不確定我得到配置部分。從JSP和Servlet中區分靜態內容通常很容易(一旦完成,它不會發生太大變化)。

問題是需要努力保持一切同步,特別是當您需要更新應用程序時。

自動化!使用Maven(或Ant,但這需要更多工作),可以很容易地從Web項目創建單獨的程序集來處理此問題:Java EE節點的WAR,HTTP服務器的靜態內容的zip。

任何Java EE產品是否支持「開箱即用」?

AFAIK,no。令人驚訝的是,部署是Java EE的薄弱環節。但是使用Maven和/或ControlTier等工具可以達到相當程度的自動化。

0

我對IBM產品並不熟悉,但通常的做法是將應用程序(主要是WAR)部署爲目錄而不是war文件,以便您可以自行訪問這些文件。除此之外,您將部署目錄映射到apache中的別名,因此它可以從那裏提供靜態內容。請注意,您需要阻止對WEB-INF目錄的所有訪問,並將所有請求路由到jsp文件(.jsp,.jsf,.do,.action等)到應用程序服務器。

阻斷WEB-INF做是使用以下指令:(充其量編寫自定義腳本)

<DirectoryMatch "(WEB-INF|META-INF)"> 
    Order allow,deny 
    Deny from all 
    AllowOverride None 
</DirectoryMatch>