0

Windows 7 で Eclipse IDE と組み込みの Jetty サーバーを使用しています。

jetty を起動してアプリを実行し、ブラウザで問題なく表示できます。

ただし、「webapp」フォルダーにある JavaScript ファイルなどのファイルをアプリで編集すると、次のエラーが発生します。

Could not write file: sample.js
sample.js (The requested operation cannot be performed on a file with a user-mapped section open)

Jetty を停止すると、ファイルを保存できます。では、Jetty がファイルをロックするのを止める方法はありますか?

JettyServer.java で WebApp コンテキストを作成する方法は次のとおりです。

private static WebAppContext createWebapp() {
    String webAppDir = "src/main/webapp/";
    WebAppContext webApp = new WebAppContext();
    webApp.setContextPath(CONTEXT_PATH);
    webApp.setResourceBase(webAppDir);
    webApp.setParentLoaderPriority(true);
    return webApp;
}
4

2 に答える 2

1

これは、Windows 環境内の桟橋でよくある問題です。 jetty サーバーをシャットダウンせずにファイルを保存するには、この手順に従う必要があります。

于 2012-11-28T22:08:45.590 に答える
0

デフォルトのサーブレットの useFileMappedBuffer を false に設定することで、この動作を無効にすることができます。そうするのは少し難しいです。

private static WebAppContext createWebapp() {
    String webAppDir = "src/main/webapp/";
    WebAppContext webApp = new WebAppContext();
    webApp.setContextPath(CONTEXT_PATH);
    webApp.setResourceBase(webAppDir);
    webApp.setParentLoaderPriority(true);

    webApp.setInitParam(
        "org.eclipse.jetty.servlet.Default.useFileMappedBuffer", "false");

    return webApp;
}

DefaultServlet は、Jetty の奥深くに設定されているように見える useFileMappedBuffer の独自のコピーを探します。ただし、上記のようにプロパティ名に接頭辞を付けることで、この値が優先されます。

于 2014-09-01T15:16:07.160 に答える