如何使Jetty动态加载“静态”页面

我正在构建Java Web应用程序,并且我讨厌传统的“代码-编译-部署-测试”周期。我想输入一个微小的更改,然后立即查看结果,而无需编译和部署。

幸运的是,Jetty很适合这样做。这是一个纯Java Web服务器。它带有一个非常不错的maven插件,可让你直接从构建树中启动Jetty阅读-无需打包war文件或部署。它甚至具有scanInterval设置:将其设置为非零值,它将监视你的Java文件和各种配置文件中的更改,并在更改后几秒钟自动重新部署。

只有一件事让我摆脱了必杀技。我的src / main / webapp目录中有javascript和css文件,这些文件刚刚由Jetty提供。我想能够编辑这些并有变化显示出来,当我刷新页面在浏览器中。不幸的是,Jetty使这些文件保持打开状态,因此在运行时(在Windows上)我无法对其进行修改。

有谁知道如何让Jetty放开这些文件,以便我可以编辑它们,然后将编辑后的文件提供给以后的请求?

回答:

你会在网上找到许多建议,包括

context.getInitParams()。put(“ useFileMappedBuffer”,“ false”);

或覆盖WebAppContext,或为init参数使用完全限定的名称。这些建议对我都不起作用(使用Jetty 7.2.2)。问题的一部分在于,useFileMappedBuffer选项需要在WebAppContext用于提供静态文件的servlet上设置,而不是在上下文上设置。

最后,我在一个简单的ServletContextHandler上做了类似的事情

// Startup stuff

final Server server = new Server(port);

ServletContextHandler handler = new ServletContextHandler();

handler.setResourceBase(path);

SessionManager sm = new HashSessionManager();

SessionHandler sh = new SessionHandler(sm);

handler.setSessionHandler(sh);

DefaultServlet defaultServlet = new DefaultServlet();

ServletHolder holder = new ServletHolder(defaultServlet);

holder.setInitParameter("useFileMappedBuffer", "false");

handler.addServlet(holder, "/");

server.setHandler(handler);

server.start();

server.join();

以上是 如何使Jetty动态加载“静态”页面 的全部内容, 来源链接: utcz.com/qa/418320.html

回到顶部