Jetty监视器WAR文件并在更改时更新

问题描述:

我有一个嵌入式Jetty,运行时有几个不同的上下文,其中一个是WAR文件。我想让Jetty在战争文件发生变化时重新部署(可能是因为它是由另一个进程重建的)。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)?

请勿直接使用WebAppContext。使用DeploymentManager查找并部署您的web应用程序。

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); 
+0

这适用于'.war',但不适用于映射到'/ api'的应用程序。但这是一个好的开始! – Jorn

+0

它也适用于'/ api',你只需要在受监控的目录中设置一个可部署的XML。所述XML只是将一个“WebAppContext”配置为一个目录的路径,而不是一个war文件。 –