代码之家  ›  专栏  ›  技术社区  ›  Sean Patrick Floyd

以编程方式向Jetty添加资源

  •  7
  • Sean Patrick Floyd  · 技术社区  · 14 年前

    我有一个主类,它配置并启动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根目录。但是,我有一些资源在target/类中,稍后会复制到webapp。所以我想添加虚拟目录到jetty。

    我想要地图 target/classes/js /js target/classes/css /css

    顺便说一句:这是6.1.4号码头

    2 回复  |  直到 14 年前
        1
  •  8
  •   Heri    14 年前

    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();
    
        2
  •  3
  •   Aaron Digulla    8 年前

    为了完整起见,以下是我一直使用的解决方法:

    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用作后备。