2016-09-21 62 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。我绝对会在生产环境中推荐独立的家庭和基本目录,但在开发服务器上,我认为这不是什么大问题。

相关问题