以编程方式向Jetty添加资源
我有一个主类来配置和激活Jetty。 (这是Wicket测试webapp的标准做法,但它确实不是特定于wicket的。)
final Server server = new Server(); //skipped socketconnector initialization final WebAppContext bb = new WebAppContext(); bb.setServer(server); bb.setContextPath("/"); bb.setWar("src/main/webapp"); server.addHandler(bb); server.start();
如您所见,src / main / webapp用作webapp root。 但是,我有一些目标/类中的资源,稍后会复制到webapp。 所以我想将虚拟目录添加到jetty。
我想将target/classes/js
映射到/js
和target/classes/css
到/css
有人可以帮忙吗?
顺便说一句:这是docker6.1.4
为每个虚拟目录添加WebAppContext
:
final Server server = new Server(); //skipped socketconnector initialization final WebAppContext js = new WebAppContext(); js.setServer(server); js.setContextPath("/js"); js.setWar("target/classes/js"); // or whatever the correct path is in your case server.addHandler(js); // css the same way final WebAppContext bb = new WebAppContext(); bb.setServer(server); bb.setContextPath("/"); bb.setWar("src/main/webapp"); server.addHandler(bb); server.start();
为了完整起见,这是我一直在使用的解决方法:
final Server server = new Server(); //skipped socketconnector initialization final WebAppContext bb = new WebAppContext(); bb.setServer(server); bb.setContextPath("/"); bb.setWar("src/main/webapp"); final URL url = new File("target/classes").getAbsoluteFile().toURI().toURL(); final Resource resource = new FileResource(url); final ResourceHandler handler = new ResourceHandler(); handler.setBaseResource(resource); server.addHandler(handler); server.addHandler(bb); server.start();
但它不是很优雅,它将所有内容安装在目标/类中,并仅将webapp用作后备。