Jetty监视WAR文件并在其更改时进行更新

时间:2015-11-06 12:21:18

标签: java jetty

我有一个嵌入式Jetty,它运行着几个不同的上下文,其中一个是WAR文件。我希望Jetty在war文件发生变化时重新部署(可能是因为它是由另一个进程重建的)。

我目前的配置:

    ContextHandlerCollection handler = new ContextHandlerCollection();
    WebAppContext webAppContext = new WebAppContext("../../webapp/ROOT.war", "/");
    handler.setHandlers(new Handler[]{
            new WebAppContext("src/main/webapp", "/api"),
            webAppContext
    });

    Server server = new Server(8080);
    server.setHandler(handler);

如何更改它以观看和重新部署war文件(../../webapp/ROOT.war)?

1 个答案:

答案 0 :(得分:2)

不要直接使用WebAppContext

使用DeploymentManager查找和部署您的网络广告。

    ContextHandlerCollection contexts = new ContextHandlerCollection();
    server.setHandler(contexts);

    DeploymentManager deployer = new DeploymentManager();
    deployer.setContexts(contexts);
    deployer.setContextAttribute(
            "org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern",
            ".*/servlet-api-[^/]*\\.jar$");

    WebAppProvider webapp_provider = new WebAppProvider();
    // The directory to monitor for WAR + XML files
    webapp_provider.setMonitoredDirName("/opt/jetty/webapps");
    webapp_provider.setScanInterval(1); // how often to scan
    webapp_provider.setExtractWars(true);
    webapp_provider.setTempDir(new File("/opt/jetty/work"));

    deployer.addAppProvider(webapp_provider);
    server.addBean(deployer);