Add resources to Jetty programmatically

佐手、 提交于 2019-12-03 07:18:07

Add a WebAppContext for each virtual directory:

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();
Sean Patrick Floyd

For completeness, here's the workaround I have been using:

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();

But it's not very elegant, it mounts everything in target/classes and uses the webapp only as fallback.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!