如果带有StaticHttpHandler的Grizzly正在运行,并且对静态文件(例如index.html)发出请求,则该文件将被锁定。也就是说,在Grizzly运行时,无法编辑和保存index.html。
是否有任何解决方案或解决方法可以保存当前提供的静态资源?
答案 0 :(得分:3)
可能的解决方法是禁用FileCache。
HttpServer server = HttpServer.createSimpleServer();
server.getNetworkListener("grizzly").getFileCache().setEnabled(false);
如果这没有帮助,我建议你记录issue,以便我们尽力解决。
答案 1 :(得分:2)
我在Grizzly 2.3.16中找不到server.getNetworkListnener方法,所以当我这样做时它对我有用:
HttpServer server = GrizzlyHttpServerFactory.createHttpServer(URI.create(baseUri), rc);
StaticHttpHandler staticHttpHandler = new StaticHttpHandler("docRoot");
staticHttpHandler.setFileCacheEnabled(false);
server.getServerConfiguration().addHttpHandler(staticHttpHandler);
答案 2 :(得分:0)
我挣扎了一段时间。上述帖子有效,但仅在服务器启动后完成。
如果在运行之前将服务器设置为false,则服务器会在启动时重新启用文件缓存。调用server.start()后,请确保将其关闭,如下所示。
当你打电话
时,泽西岛2.3.17 / Grizzly HttpServer似乎会打开缓存server.start();
尽管在开始之前将其设置为假。
server.start(); // turns file cache back on
handler.setFileCacheEnabled(false); // turn it off again
// get every NetworkListener and set it to false (as these will also lock files)
for (NetworkListener l : server.getListeners()) {l.getFileCache().setEnabled(false); }