Gradle から Jetty 利用していて静的リソースをロックして困る場合には



Windows で Gradle から Jetty プラグインで開発していると、静的リソースを Jetty がロックしてしまう。



jetty-6.XX\etc\webdefault.xml に Jetty のデフォルト設定があるので、WEB-INF/jetty-webdefault.xml にでもコピーして useFileMappedBuffer -> false に書き換える。

<init-param>
  <param-name>useFileMappedBuffer</param-name>
  <param-value>false</param-value>
</init-param>

で gradle から以下の様に webDefaultXml の読み込み先を指定してあげるとよい。

[jettyRun, jettyRunWar, jettyStop]*.with {
    webDefaultXml = file("${project.webAppDir}/WEB-INF/jetty-webdefault.xml")
}

Jetty を組み込みで利用している場合には、コンテキストに初期化パラメータを設定してあげればよい。

WebAppContext context = new WebAppContext();
・・・
context.setInitParameter("org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");