tomcat-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Tomcat Wiki] Update of "HowTo/FasterStartUp" by KonstantinKolinko
Date Fri, 22 Nov 2013 23:55:17 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Tomcat Wiki" for change notification.

The "HowTo/FasterStartUp" page has been changed by KonstantinKolinko:
https://wiki.apache.org/tomcat/HowTo/FasterStartUp?action=diff&rev1=16&rev2=17

Comment:
Correction: TLD scanning does occur at startup. I was confused that there are two TLD scans
and the first one happens silently.

  
  These features require scanning the JAR files. The worst is scanning for annotated classes.
There are a lot of class files to process and parsing a class file takes noticeable time.
  
- It is possible to configure a web application to omit most of the scanning. It is also possible
to configure which JARs Tomcat should skip in its scanning.
+ It is possible to configure a web application to omit most of the scanning. It is also possible
to configure which JARs Tomcat should skip.
  
  Other features that require scanning are:
  
-  *  Discovery of tag libraries (`META-INF/**/*.tld`) (shortened as TLD scanning)
+  *  Discovery of tag libraries &mdash; scanning for Tag Library Descriptor files (`META-INF/**/*.tld`)
(shortened as TLD scanning)
  
- The TLD scanning happens when Tomcat needs to compile a JSP page. It does not affect the
startup time, but does affect the access time for the first not-yet-compiled JSP page in the
web application.
+ The TLD scanning is done at startup, because a library can define a `Listener` in its TLD
file.
+ 
+ A note: in Tomcat 7 and earlier the TLD scanning happens twice, (1) by servlet engine to
discover the listeners, (2) by JSP engine when compiling a JSP page. The first scanning happens
at startup time (in `TldConfig`), the second one happens when Tomcat needs to compile a JSP
page (in `TldLocationsCache`). The second scanning is more noticeable, because it prints a
diagnostic message about scanned JARs that contained no TLDs. In Tomcat 8 the TLD scanning
happens only once at startup time (in `JasperInitializer`).
+ 
  
  == Remove unnecessary JARs ==
  
@@ -37, +40 @@

   1. `metadata-complete="true"` attribute on the `<web-app>` element.
   2. an empty `<absolute-ordering />` element.
  
- "`metadata-complete="true"`" disables scanning your web application and its libraries for
classes that use annotations to define components of a web application (Servlets etc.). This
option is not enough to disable all of annotation scanning. If there is a SCI with a @HandlesTypes
annotation, Tomcat has to scan your application for classes that use annotations or interfaces
specified in that @HandlesTypes annotation and provide the list of such classes to the SCI.
+ Setting `metadata-complete="true"` disables scanning your web application and its libraries
for classes that use annotations to define components of a web application (Servlets etc.).
  
- An example of such SCI is in the WebSocket API implementation jar (`tomcat-websocket.jar`,
`tomcat7-websocket.jar`) which is included with Tomcat 7 starting with 7.0.47.
+ The `metadata-complete` option is not enough to disable all of annotation scanning. If there
is a SCI with a !HandlesTypes annotation, Tomcat has to scan your application for classes
that use annotations or interfaces specified in that annotation.
  
- The "`<absolute-ordering>`" element specifies which web fragment JARs (according to
the names in their `WEB-INF/web-fragment.xml` files) have to be scanned for SCIs, fragments
and annotations. If you specify an empty "`<absolute-ordering/>`" it means that none
of that scanning will occur. This feature does not affect scanning for web application resources.
+ The `<absolute-ordering>` element specifies which web fragment JARs (according to
the names in their `WEB-INF/web-fragment.xml` files) have to be scanned for SCIs, fragments
and annotations. An empty `<absolute-ordering/>` element configures that none are to
be scanned.
+ 
+ Note: in Tomcat 8 the container-provided SCIs are always discovered, regardless of `absolute-ordering`.
+ 
+ An example of a SCI is in the WebSocket API implementation jar (`tomcat-websocket.jar`,
`tomcat7-websocket.jar`) which is included with Tomcat 7 starting with 7.0.47.
+ 
+ Scanning for web application resources and TLD scanning are not affected by these options.
  
  == Exclude JARs from scanning ==
  

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org


Mime
View raw message