2013-10-28 21 views
0

我正在使用Jetty服務器用於我的Web應用程序。 確實jetty總是在服務器啓動時展開一個war文件嗎? 如果不是我該如何做到這一點? 讓我們說第一次啓動/部署後,現在如果我將war文件替換爲舊的war文件,jetty不會擴展舊的war文件。碼頭如何確定是否在開始時擴大戰爭

回答

2

默認情況下,Jetty始終展開WAR文件。

您可以將其配置爲不使用advanced configuration descriptor file中的extractWAR進行擴展。

但是,我認爲你實際上在問的是,web app/servlet spec temp目錄邏輯是如何工作的?

Jetty使用的tempDirectory由許多因素決定,主要由servlet規範決定。 See prior answer about the topic of tempDirectory configuration for details

當未指定/取消配置臨時目錄時,會使用following rough syntax創建一個新的臨時目錄。

File tempDir = new File(System.getProperty("java.io.tmpdir") + 
    File.separator + "jetty-" + host + "-" + port + "-" + 
    resourceBase + "-_" + context + "-" + virtualhost + "-" + randomdigits + 
    ".dir"); 

使用的臨時目錄是持久的,這意味着它不會在服務器關閉時被刪除。 當WAR文件(或上下文可部署的XML)被確定爲比持久的temp目錄中的內容更新時,臨時目錄用於解壓縮WAR。

從Jetty 9.1開始,現在有一個WebAppContext.setPersistTempDirectory(boolean)可用於關閉臨時目錄持久性。

+0

你提到如果jetty是新版的,那麼它會解開war文件。如果我用舊版本替換戰爭文件怎麼辦?將jetty在服務器重新啓動時再次解壓縮它? –