private void scanTlds ( ) throws JasperException { mappings = new HashMap < String , String [ ] > ( ) ; // Make a local copy of the system jar cache jarTldCacheLocal . putAll ( jarTldCache ) ; try { processWebDotXml ( ) ; scanJars ( ) ; processTldsInFileSystem ( "/WEB-INF/" ) ; } catch ( JasperException ex ) { throw ex ; } catch ( Exception ex ) { throw new JasperException ( Localizer . getMessage ( "jsp.error.internal.tldinit" ) , ex ) ; } }
Scan the all the tlds accessible in the web app . For performance reasons this is done in two stages . At servlet initialization time we only scan the jar files for listeners . The container passes a list of system jar files that are known to contain tlds with listeners . The rest of the jar files will be scanned when a JSP page with a tld referenced is compiled .