| // ======================================================================== |
| // Copyright (c) 1995-2017 Mort Bay Consulting Pty. Ltd. |
| // ======================================================================== |
| // All rights reserved. This program and the accompanying materials |
| // are made available under the terms of the Eclipse Public License v1.0 |
| // and Apache License v2.0 which accompanies this distribution. |
| // |
| // The Eclipse Public License is available at |
| // http://www.eclipse.org/legal/epl-v10.html |
| // |
| // The Apache License v2.0 is available at |
| // http://www.opensource.org/licenses/apache2.0.php |
| // |
| // You may elect to redistribute this code under either of these licenses. |
| // ======================================================================== |
| |
| [[hot-deployment]] |
| === Hot Deployment |
| |
| Jetty allows for deploying an arbitrary context or web application by monitoring a directory for changes. |
| If a web application or a context descriptor is added to the directory, Jetty's DeploymentManager (DM) deploys a new context. |
| If a context descriptor is touched or updated, the DM stops, reconfigures, and redeploys its context. |
| If a context is removed, the DM stops it and removes it from the server. |
| |
| This behavior can be controlled by configuring `WebAppProvider` properties. |
| |
| monitoredDirName:: |
| The directory to scan for possible deployable Web Applications (or Deployment Descriptor XML files). |
| scanInterval:: |
| Number of seconds between scans of the provided `monitoredDirName`. |
| A value of `0` disables the continuous hot deployment scan, Web Applications will be deployed on startup only. |
| |
| The default location for this configuration is in the `${jetty.home}/etc/jetty-deploy.xml` file. |
| |
| [source, xml, subs="{sub-order}"] |
| ---- |
| <?xml version="1.0"?> |
| <!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_3.dtd"> |
| |
| <Configure id="Server" class="org.eclipse.jetty.server.Server"> |
| |
| <Call name="addBean"> |
| <Arg> |
| <New id="DeploymentManager" class="org.eclipse.jetty.deploy.DeploymentManager"> |
| <Set name="contexts"> |
| <Ref refid="Contexts" /> |
| </Set> |
| <Call name="setContextAttribute"> |
| <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg> |
| <Arg>.*/[^/]*servlet-api-[^/]*\.jar$|.*/javax.servlet.jsp.jstl-.*\.jar$|.*/org.apache.taglibs.taglibs-standard-impl-.*\.jar$</Arg> |
| </Call> |
| |
| <Call id="webappprovider" name="addAppProvider"> |
| <Arg> |
| <New class="org.eclipse.jetty.deploy.providers.WebAppProvider"> |
| <Set name="monitoredDirName"><Property name="jetty.base" default="." />/<Property name="jetty.deploy.monitoredDir" deprecated="jetty.deploy.monitoredDirName" default="webapps"/></Set> |
| <Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set> |
| <Set name="scanInterval"><Property name="jetty.deploy.scanInterval" default="1"/></Set> |
| <Set name="extractWars"><Property name="jetty.deploy.extractWars" default="true"/></Set> |
| </New> |
| </Arg> |
| </Call> |
| </New> |
| </Arg> |
| </Call> |
| </Configure> |
| ---- |
| |
| See xref:default-web-app-provider[] for more configuration details. |
| |
| See also xref:deployment-architecture[] for detailed conceptual information. |