2016-09-21 76 views
1

我正在使用標準「Jetty服務器」運行配置將其部署到本地Jetty 9.3服務器的IntelliJ 2016.2.4(Windows 7)中的項目上工作。無法從IntelliJ重新加載Jetty服務器上的靜態文件

重新加載普通Java類(在調試模式下)正常工作。但是,當我嘗試重新部署靜態文件main.js,的IntelliJ顯示以下錯誤:

java.io.FileNotFoundException: D:\Projects\portal\build\exploded\portal-project\js\main.js (The requested operation cannot be performed on a file with a user-mapped section open)

this,我試圖讓修改

<init-param> 
    <param-name>useFileMappedBuffer</param-name> 
    <param-value>false</param-value> <!--Changed from <param-value>false</param-value>--> 
</init-param> 

到碼頭分佈目錄的etc/webdefault.xml。沒有其他變化已經做出分配。特別地,jetty.deploy.defaultsDescriptorPath具有在etc/jetty-deploy.xml中設置的默認值<Property name="jetty.home" default="." />/etc/webdefault.xml

不幸的是,這沒有任何區別。如this answer中提出的設置maxCachedFiles0也沒有工作。

我在某處發現Jetty Maven插件可能會解決問題,但該項目不使用Maven(也不是Gradle)。

編輯:我不知道是否有任何意義,但在啓動時,我得到的日誌行

2016-09-21 17:27:33.275:WARN:oejs.HomeBaseWarning:main: This instance of Jetty is not running from a separate {jetty.base} directory, this is not recommended. [...]

+0

我一直無法複製這個,雖然我在Windows 10上。奇怪的是,我不能在Win10上使用DefaultServlet顯示錯誤。我**可以**在使用ResourceHandler時發生錯誤,但在webdefault.xml中進行更改將清除它。你確定你沒有其他的呼叫說一個web.xml或代碼中的其他地方衝突嗎? – Walkerwatch

回答

1

我在Windows 10臨,運行的IntelliJ IDEA 2016年3月4日和Jetty 9.3 .10.v20160621 - 我能夠複製哈雷的結果。編輯webdefault.xml沒有幫助。

How to make Jetty dynamically load "static" pages有答案 - 給webapp的web.xml添加一個上下文參數。

但是就書面而言,它不適用於更新版本的Jetty,因爲它引用了至少在幾年內Jetty尚未使用的命名空間「org.mortbay」。這是對我有用的東西。本質上,同樣的事情在其他職位,但這個片段使用org.eclipse,不org.mortbay:

<context-param> 
    <param-name>org.eclipse.jetty.servlet.Default.useFileMappedBuffer</param-name> 
    <param-value>false</param-value> 
</context-param> 

現在,爲了滿足您的其他點......

最佳目前的做法是有一個單獨的jetty.home目錄和jetty.base目錄。這個想法是,jetty.home包含二進制文件,庫和原始的DEFAULT配置。您需要覆蓋的所有內容,可以在您設置爲jetty.base的任何目錄中覆蓋。

我的生產J2EE服務器運行Jetty,並且它們具有獨立的主目錄和基目錄。它更乾淨,如果你這樣設置,那麼破壞事物的可能性就會降低。作爲http://www.eclipse.org/jetty/documentation/current/startup-base-and-home.html說:

Jetty Home should always be treated as a standard of truth. All configuration modifications, changes and additions should be made in the appropriate Jetty Base directory.

我的筆記本電腦沒有單獨的家庭和基本目錄,我得到當我開發一個警告,我不關心它。您可以在沒有單獨的jetty.base的情況下運行Jetty - 它不會導致任何問題。這不僅僅是一個BCP。我絕對會在生產環境中推薦獨立的家庭和基本目錄,但在開發服務器上,我認爲這不是什麼大問題。

相關問題