【问题标题】:Add resources to Jetty programmatically以编程方式将资源添加到 Jetty
【发布时间】:2010-09-15 13:44:48
【问题描述】:

我有一个配置和启动 Jetty 的主类。 (这是 Wicket 测试 web 应用程序的标准做法,但它实际上并不是特定于 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 根。但是,我有一些位于目标/类中的资源,稍后会复制到 webapp。所以我想给jetty添加虚拟目录。

我想将target/classes/js 映射到/jstarget/classes/css/css

有人可以帮忙吗?

顺便说一句:这是码头 6.1.4

【问题讨论】:

    标签: java jetty embedded-jetty


    【解决方案1】:

    为每个虚拟目录添加一个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();
    

    【讨论】:

    • 为什么WebAppContext.setServer(Server)Server.addHandler(WebAppContext) 都需要?
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-02
      • 2020-10-29
      • 2012-09-09
      相关资源
      最近更新 更多