Jump to: navigation, search

Difference between revisions of "Jetty/Feature/Hot Deployment"

< Jetty‎ | Feature
(New page: {{Jetty Feature | introduction = (required) | body = (required) | more = (optional) - links, additional references | category = Jetty Features }})
 
 
(26 intermediate revisions by 3 users not shown)
Line 1: Line 1:
 
{{Jetty Feature
 
{{Jetty Feature
| introduction = (required)
+
| introduction =
| body = (required)
+
 
| more = (optional) - links, additional references
+
{{Jetty Redirect|http://www.eclipse.org/jetty/documentation/current/hot-deployment.html}}
| category = [[Jetty Features]]
+
 
 +
Jetty provides capability to deploy an arbitrary context or web application by monitoring a directory for changes. If you add a web application or a context descriptor to the directory, Jetty's Deployment Manager (DM) deploys a new context. If you touch or update a context descriptor, the DM stops, reconfigures, and redeploys its context. If you remove a context, the DM stops it and removes it from the server.
 +
 
 +
| body =
 +
 
 +
The deployment manager is a state-oriented mechanism suitable for developers and embedded users to customize to a variety of use cases.  An example follows of the <tt>jetty.xml</tt> that creates the basic deployment manager, which Jetty then uses to plug in the ContextProvider and the WebAppProvider that back the Hot Deployment mechanism.  This example also provides information about adding another node to the deployment state, in this case a debug binding.  In the Jetty distribution this XML is in the <tt>jetty-deploy.xml</tt> file, which combined with the <tt>jetty-contexts.xml</tt> and <tt>jetty-webapps.xml</tt> files comprise the stock jetty hot deployment mechanism.
 +
 
 +
<source lang="xml">
 +
<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 id="Contexts" />
 +
          </Set>
 +
          <Call name="setContextAttribute">
 +
            <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
 +
            <Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
 +
          </Call>
 +
         
 +
         
 +
          <!-- Add a customize step to the deployment lifecycle -->
 +
          <!-- uncomment and replace DebugBinding with your extended AppLifeCycle.Binding class
 +
          <Call name="insertLifeCycleNode">
 +
            <Arg>deployed</Arg>
 +
            <Arg>starting</Arg>
 +
            <Arg>customise</Arg>
 +
          </Call>
 +
          <Call name="addLifeCycleBinding">
 +
            <Arg>
 +
              <New class="org.eclipse.jetty.deploy.bindings.DebugBinding">
 +
                <Arg>customise</Arg>
 +
              </New>
 +
            </Arg>
 +
          </Call>
 +
          -->
 +
         
 +
        </New>
 +
      </Arg>
 +
    </Call>
 +
</Configure>
 +
</source>
 +
 
 +
| more =
 +
See the [[Jetty/Feature/ContextDeployer|Context Provider]] and [[Jetty/Feature/WebAppDeployer|WebApp Provider]] documentation for more information. Previously, Jetty implemented this feature via a ContextDeployer and WebappDeployer, which have both been deprecated.
 +
 
 +
See also the [[Jetty/Feature/Deployment_Manager|Deployment Manager]] feature reference for detailed conceptual information.
 
}}
 
}}

Latest revision as of 14:01, 23 April 2013



Introduction


Jetty provides capability to deploy an arbitrary context or web application by monitoring a directory for changes. If you add a web application or a context descriptor to the directory, Jetty's Deployment Manager (DM) deploys a new context. If you touch or update a context descriptor, the DM stops, reconfigures, and redeploys its context. If you remove a context, the DM stops it and removes it from the server.

Feature

The deployment manager is a state-oriented mechanism suitable for developers and embedded users to customize to a variety of use cases. An example follows of the jetty.xml that creates the basic deployment manager, which Jetty then uses to plug in the ContextProvider and the WebAppProvider that back the Hot Deployment mechanism. This example also provides information about adding another node to the deployment state, in this case a debug binding. In the Jetty distribution this XML is in the jetty-deploy.xml file, which combined with the jetty-contexts.xml and jetty-webapps.xml files comprise the stock jetty hot deployment mechanism.

<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 id="Contexts" />
          </Set>
          <Call name="setContextAttribute">
            <Arg>org.eclipse.jetty.server.webapp.ContainerIncludeJarPattern</Arg>
            <Arg>.*/jsp-api-[^/]*\.jar$|.*/jsp-[^/]*\.jar$</Arg>
          </Call>
 
 
          <!-- Add a customize step to the deployment lifecycle -->
          <!-- uncomment and replace DebugBinding with your extended AppLifeCycle.Binding class 
          <Call name="insertLifeCycleNode">
            <Arg>deployed</Arg>
            <Arg>starting</Arg>
            <Arg>customise</Arg>
          </Call>
          <Call name="addLifeCycleBinding">
            <Arg>
              <New class="org.eclipse.jetty.deploy.bindings.DebugBinding">
                <Arg>customise</Arg>
              </New>
            </Arg>
          </Call>
          -->
 
        </New>
      </Arg>
    </Call>
</Configure>

Additional Resources

See the Context Provider and WebApp Provider documentation for more information. Previously, Jetty implemented this feature via a ContextDeployer and WebappDeployer, which have both been deprecated.

See also the Deployment Manager feature reference for detailed conceptual information.