Java Jetty监视WAR文件并在其更改时更新
我有一个嵌入式Jetty,它运行着几个不同的上下文,其中一个是WAR文件。我希望Jetty在war文件更改时重新部署它(可能是因为它是由另一个进程重建的) 我当前的配置:Java Jetty监视WAR文件并在其更改时更新,java,jetty,Java,Jetty,我有一个嵌入式Jetty,它运行着几个不同的上下文,其中一个是WAR文件。我希望Jetty在war文件更改时重新部署它(可能是因为它是由另一个进程重建的) 我当前的配置: ContextHandlerCollection handler = new ContextHandlerCollection(); WebAppContext webAppContext = new WebAppContext("../../webapp/ROOT.war", "/"); handle
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();
setHandler(上下文);
DeploymentManager部署器=新的DeploymentManager();
setContexts(contexts);
deployer.setContextAttribute(
“org.eclipse.jetty.server.webapp.ContainerCludeJarPattern”,
“*/servlet api-[^/]*\\.jar$”;
WebAppProvider webapp_provider=新的WebAppProvider();
//要监视WAR+XML文件的目录
webapp_provider.setmonitoredirname(“/opt/jetty/webapps”);
webapp_provider.setScanInterval(1);//多久扫描一次
webapp_provider.setExtractWars(true);
setempdir(新文件(“/opt/jetty/work”);
deployer.addAppProvider(webapp\u提供者);
addBean(部署器);
这适用于.war
,但不适用于映射到/api
的应用程序。但这是一个好的开始!它也适用于/api
,您只需在监控目录中设置一个可部署的XML即可。所说的XML只是将WebAppContext
配置为指向目录的路径,而不是war文件。