我有一个嵌入式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
)?
答案 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);