2008-12-30 121 views
0

戰爭文件部署請看下面的例子結構具有共享資源

- Project 
    - www 
     - files 
      + documents 
      + html 
      + images 
      + scripts 
    - WEB-INF 
     * web.xml 

的文件夾必須是一個符號鏈接或以其他方式從戰爭文件外,因爲用戶將添加和刪除文件(通過映射網絡驅動器)。

我想將webapp部署爲war文件,但我不知道如何去做,並考慮到上述內容。你能指出一些嗎? /亞當

回答

1

如果它是靜態內容,也許你會更好地面對你的應用程序服務器與Web服務器,並把靜態內容。您可以減輕應用服務器必須提供靜態數據並保存網絡往返啓動的功能。

-1

聽起來像你需要一個網頁內容管理系統(CMS)。

+0

-1我不認爲這個答案對作者有幫助 – Marcel 2008-12-31 09:16:58

0

爲什麼不將文檔等存儲在數據庫中,然後讓Web應用程序訪問數據庫並允許用戶以這種方式提取文件?它是否必須是映射的網絡驅動器?

否則,如果它是知道那裏的東西的事情,那麼您總是可以動態構建jnlp文件,並以參數(如果它們是服務器端)傳遞文件列表等。

猜猜我們需要更多地瞭解你正在努力完成的事情。

+0

我在下面添加了一個簡短的解釋。該位置將被共享,因此將文件保存到數據庫不是一種選擇。儘管創造性思維! :) – 2008-12-31 02:51:39

1

我同意@ duffymo.myopenid.com使用爲特定URL前綴提供靜態內容的Web服務器向您的應用服務器前進,這是一個不錯的,乾淨的解決方案。

如果這在您的環境中不可行,或者您決定寧願在Web應用程序本身中處理它,您也可以編寫一個有效執行相同操作的servlet。例如,創建一個映射到URL模式/ documents/*的servlet。這個servlet可以解析URL(/documents/some/file.png)來確定一個相對文件名(some/file.png)。然後它可以讀取並返回外部目錄中找到的相應內容(/staticDocs/some/file.png)。

0

基本上,它是一個Web應用程序,它聚合來自各種來源的信息並生成文檔。要求用戶有能力從網絡上手動創建和上傳文檔,而無需登錄到Web應用程序。

將文檔位置路徑作爲上下文變量肯定是可行的。我想這是最簡單的方法。/Adam

0

不幸的是,對於.war文件來說,.zip文件是心臟的,而.zip文件不支持符號鏈接。如果您只是部署到Windows計算機上,則可能使用快捷方式文件運氣不佳。然而,我不確定應用程序服務器是否會這樣(...可能不是)

我會建議在應用程序中添加一個配置參數,以允許指定文檔文件夾的完整路徑。默認路徑應該是相對的(「./www/files/documents」),這樣應用程序可以在沒有額外配置的情況下運行。

0

很多java web服務器都支持「爆炸戰爭文件」,您只需將.war文件解壓縮到部署目錄中。有了tomcat,你可以將它複製到$CATALINA_HOME/webapps,你就完成了。

這應該適合你。

0

怎麼樣在你的服務器上創建一個指向文件存儲目錄的環境變量?環境變量可能比WAR文件中的設置更好,因爲您可以在不更改WAR文件的情況下將應用程序部署到新環境(可能從DEV移動到PROD)。

從您的java代碼中,您可以參考此環境設置: String docPath = System.getProperty(「DOC_PATH」);

0

在的Apache Tomcat有時可能適當經由Tomcat的RewriteValve這樣實現重用:

META-INF/context.xml中:

<Context> 
    <Valve className="org.apache.catalina.valves.rewrite.RewriteValve" /> 
</Context> 

WEB-INF/rewrite.config:

現在
RewriteRule (.*)/login(/.*\.)(png|jpg|js|css) $1$2$3 

/appContext/login/路徑將使用相同的圖像/ JS/CSS的/appContext/

當然,對於任何問題的所有基於正則表達式的解決方案,保持表達式的複雜性對於性能而言都很重要。