blob: 54f644bd387656af0aae71f0e4fbf35804c45d5d [file] [log] [blame]
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Troubleshooting Slow Deployment</title><link rel="stylesheet" type="text/css" href="css/docbook.css"><meta name="generator" content="DocBook XSL Stylesheets V1.79.1"><meta name="keywords" content="jetty, servlet, servlet-api, cometd, http, websocket, eclipse, maven, java, server, software"><link rel="home" href="index.html" title="Jetty"><link rel="up" href="troubleshooting.html" title="Chapter&nbsp;33.&nbsp;Troubleshooting"><link rel="prev" href="preventing-memory-leaks.html" title="Preventing Memory Leaks"><link rel="next" href="security-reports.html" title="Jetty Security Reports"><link xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" rel="shortcut icon" href="images/favicon.ico"><link rel="stylesheet" href="css/highlighter/foundation.css"><script src="js/highlight.pack.js"></script><script>
hljs.initHighlightingOnLoad();
</script><link type="text/css" rel="stylesheet" href="css/font-awesome/font-awesome.min.css"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><tr><td style="width: 25%"><a href="http://www.eclipse.org/jetty"><img src="images/jetty-header-logo.png" alt="Jetty Logo"></a><br><span style="font-size: small">
Version: 9.4.28-SNAPSHOT</span></td><td style="width: 50%"></td></tr></table><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Troubleshooting Slow Deployment</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="preventing-memory-leaks.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a>&nbsp;</td><th width="60%" align="center">Chapter&nbsp;33.&nbsp;Troubleshooting<br><a accesskey="p" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></th><td width="20%" align="right">&nbsp;<a accesskey="n" href="security-reports.html">Next <i class="fa fa-chevron-right" aria-hidden="true"></i></a></td></tr></table><hr></div><div xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times" class="jetty-callout"><h5 class="callout"><a href="http://www.webtide.com/">Contact the core Jetty developers at
<span class="website">www.webtide.com</span></a></h5><p>
private support for your internal/customer projects ... custom extensions and distributions ... versioned snapshots for indefinite support ...
scalability guidance for your apps and Ajax/Comet projects ... development services for sponsored feature development
</p></div><div class="section"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="troubleshooting-slow-deployment"></a>Troubleshooting Slow Deployment</h2></div></div></div><div class="toc"><dl class="toc"><dt><span class="section"><a href="troubleshooting-slow-deployment.html#_remedies">Remedies</a></span></dt></dl></div><p>After upgrading to a version of Jetty that supports Servlet Spec 3.0 or above, enabling some new modules, or introducing some new jars to your webapp, you notice that your deployment time is increased.
This could be due to scanning for classes caused by a ServletContainerInitializer.</p><p>As documented in the section on <a class="link" href="using-annotations.html" title="Working with Annotations">Using Annotations</a>, even if your webapp has set <code class="literal">metadata-complete=true</code> in web.xml, all jars within your webapp may still be scanned due to one or more ServletContainerInitializers that have a <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/HandlesTypes.html" target="_top">@HandlesTypes</a> annotation listing the names of classes in which it is interested.</p><p>There are 3 ways to speed up deployment time:</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem">limit which ServletContainerInitializers to include</li><li class="listitem">limit which jars to scan</li><li class="listitem">limit the scan to the first deployment only</li></ul></div><div class="section"><div class="titlepage"><div><div><h3 class="title"><a name="_remedies"></a>Remedies</h3></div></div></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_limit_which_servletcontainerinitializers_to_execute"></a>Limit Which ServletContainerInitializers to Execute</h4></div></div></div><p>As documented in the section <a class="link" href="using-annotations.html#excluding-scis" title="Excluding ServletContainerInitializers">Excluding ServletContainerInitializers</a>, you can provide a context attribute that defines a pattern of ServletContainerInitializer (SCI) class names to ignore.
These SCIs will not be examined for <a class="link" href="http://docs.oracle.com/javaee/6/api/javax/servlet/annotation/HandlesTypes.html" target="_top">@HandlesTypes</a> and will not be executed.
This is useful if you have included a 3rd party jar that has a SCI on which your code does not rely.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_limit_which_jars_to_scan"></a>Limit Which Jars to Scan</h4></div></div></div><p>As documented in the section <a class="link" href="using-annotations.html#jars-scanned-for-annotations" title="Which Jar Files Are Scanned For Discovered Annotations">Jars Scanned for Annotations</a>, you can explicitly define which jars to include in the scanning process.
This is helpful if you have a lot of jars in your webapp, and you know that they do not contain any classes referenced by an @HandlesTypes annotation on a ServletContainerInitializer that will be executed.</p></div><div class="section"><div class="titlepage"><div><div><h4 class="title"><a name="_limit_scanning_to_first_deployment_only_quickstart"></a>Limit Scanning to First Deployment Only (Quickstart)</h4></div></div></div><p>The <a class="link" href="quickstart-webapp.html" title="Quickstart Webapps">quickstart mechanism</a> will do a normal deployment - obeying any limits on SCIs and jars to scan as documented here - the first time the webapp is deployed only.
Subsequent deployments will re-use the information discovered during the first deployment.
This is useful if you cannot limit the scan significantly by using any of the mechanisms described here, but you don&#8217;t want to incur the cost of scanning on every redeployment.
The <a class="link" href="quickstart-webapp.html" title="Quickstart Webapps">quickstart mechanism</a> and how to use it is described <a class="link" href="quickstart-webapp.html" title="Quickstart Webapps">here</a>.</p></div></div></div><script type="text/javascript">
SyntaxHighlighter.all()
</script><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="preventing-memory-leaks.html"><i class="fa fa-chevron-left" aria-hidden="true"></i> Previous</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="troubleshooting.html"><i class="fa fa-chevron-up" aria-hidden="true"></i> Top</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="security-reports.html">Next <i class="fa fa-chevron-right" aria-hidden="true"></i></a></td></tr><tr><td width="40%" align="left" valign="top">Preventing Memory Leaks&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html"><i class="fa fa-home" aria-hidden="true"></i> Home</a></td><td width="40%" align="right" valign="top">&nbsp;Jetty Security Reports</td></tr></table></div><p xmlns:jfetch="java:org.eclipse.jetty.xslt.tools.JavaSourceFetchExtension" xmlns:fetch="java:org.eclipse.jetty.xslt.tools.SourceFetchExtension" xmlns:d="http://docbook.org/ns/docbook" xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0" xmlns:xslthl="http://xslthl.sf.net" xmlns:gcse="http://www.google.com" xmlns:date="http://exslt.org/dates-and-times"><div class="jetty-callout">
See an error or something missing?
<span class="callout"><a href="http://github.com/eclipse/jetty.project">Contribute to this documentation at
<span class="website"><i class="fa fa-github" aria-hidden="true"></i> Github!</span></a></span><span style="float: right"><i>(Generated: 2020-03-10)</i></span></div></p></body></html>