costin 2003/03/11 23:12:28 Modified: catalina/src/share/org/apache/catalina/startup ContextConfig.java Log: - cleanup imports - use a normal properties for authenticators - what's with the resource bundle ??? - use the cleaner API in digester to use the thread CL - remove the debug message for timing - the info will be visible in JMX - use getBaseDir and check the engine - instead of system property ( that's the fallback) - use the container class loader when loading the default web.xml Revision Changes Path 1.20 +59 -48 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/ContextConfig.java Index: ContextConfig.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/startup/ContextConfig.java,v retrieving revision 1.19 retrieving revision 1.20 diff -u -r1.19 -r1.20 --- ContextConfig.java 5 Mar 2003 21:42:22 -0000 1.19 +++ ContextConfig.java 12 Mar 2003 07:12:28 -0000 1.20 @@ -67,19 +67,13 @@ import java.io.FileNotFoundException; import java.io.InputStream; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; import java.net.JarURLConnection; -import java.net.MalformedURLException; import java.net.URL; -import java.util.ArrayList; import java.util.Enumeration; import java.util.HashSet; import java.util.Iterator; -import java.util.MissingResourceException; -import java.util.ResourceBundle; import java.util.Set; -import java.util.Stack; +import java.util.Properties; import java.util.jar.JarEntry; import java.util.jar.JarFile; import javax.naming.NamingException; @@ -94,9 +88,7 @@ import org.apache.catalina.Connector; import org.apache.catalina.Container; import org.apache.catalina.Context; -import org.apache.catalina.DefaultContext; import org.apache.catalina.Engine; -import org.apache.catalina.Globals; import org.apache.catalina.Host; import org.apache.catalina.Lifecycle; import org.apache.catalina.LifecycleEvent; @@ -108,12 +100,8 @@ import org.apache.catalina.Wrapper; import org.apache.catalina.core.ContainerBase; import org.apache.catalina.core.StandardContext; +import org.apache.catalina.core.StandardEngine; import org.apache.catalina.deploy.ApplicationParameter; -import org.apache.catalina.deploy.ContextEjb; -import org.apache.catalina.deploy.ContextEnvironment; -import org.apache.catalina.deploy.ContextLocalEjb; -import org.apache.catalina.deploy.ContextResource; -import org.apache.catalina.deploy.ContextResourceLink; import org.apache.catalina.deploy.ErrorPage; import org.apache.catalina.deploy.FilterDef; import org.apache.catalina.deploy.FilterMap; @@ -121,10 +109,8 @@ import org.apache.catalina.deploy.SecurityConstraint; import org.apache.catalina.util.StringManager; import org.apache.catalina.util.SchemaResolver; -import org.apache.catalina.valves.ValveBase; import org.apache.commons.digester.Digester; import org.xml.sax.InputSource; -import org.xml.sax.EntityResolver; import org.xml.sax.SAXNotRecognizedException; import org.xml.sax.SAXNotSupportedException; import org.xml.sax.SAXParseException; @@ -151,7 +137,7 @@ * the name of the implemented authentication method, and the value is * the fully qualified Java class name of the corresponding Valve. */ - private static ResourceBundle authenticators = null; + private static Properties authenticators = null; /** @@ -169,7 +155,7 @@ /** * The default web application's deployment descriptor location. */ - private String defaultWebXml = Constants.DefaultWebXml; + private String defaultWebXml = null; /** @@ -244,7 +230,7 @@ * Return the location of the default deployment descriptor */ public String getDefaultWebXml() { - + if( defaultWebXml == null ) defaultWebXml=Constants.DefaultWebXml; return (this.defaultWebXml); } @@ -334,6 +320,10 @@ ((StandardContext) context).setReplaceWelcomeFiles(true); } webDigester.clear(); +// ClassLoader cl=Thread.currentThread().getContextClassLoader(); +// if( cl!=null ) +// webDigester.setClassLoader(cl); + webDigester.setUseContextClassLoader(true); webDigester.push(context); webDigester.parse(is); } else { @@ -361,10 +351,9 @@ webRuleSet.recycle(); long t2=System.currentTimeMillis(); - if( (t2-t1 ) > 200 ) - log.debug("Processed " + url + " " + ( t2-t1)); - - + if (context instanceof StandardContext) { + ((StandardContext) context).setStartupTime(t2-t1); + } } @@ -413,9 +402,16 @@ // Load our mapping properties if necessary if (authenticators == null) { try { - authenticators = ResourceBundle.getBundle - ("org.apache.catalina.startup.Authenticators"); - } catch (MissingResourceException e) { + InputStream is=this.getClass().getClassLoader().getResourceAsStream("org/apache/catalina/startup/Authenticators.properties"); + if( is!=null ) { + authenticators = new Properties(); + authenticators.load(is); + } else { + log.error(sm.getString("contextConfig.authenticatorResources")); + ok=false; + return; + } + } catch (IOException e) { log.error(sm.getString("contextConfig.authenticatorResources"), e); ok = false; return; @@ -424,12 +420,8 @@ // Identify the class name of the Valve we should configure String authenticatorName = null; - try { - authenticatorName = - authenticators.getString(loginConfig.getAuthMethod()); - } catch (MissingResourceException e) { - authenticatorName = null; - } + authenticatorName = + authenticators.getProperty(loginConfig.getAuthMethod()); if (authenticatorName == null) { log.error(sm.getString("contextConfig.authenticatorMissing", loginConfig.getAuthMethod())); @@ -631,21 +623,42 @@ return (webDigester); } + private String getBaseDir() { + Container engineC=context.getParent().getParent(); + if( engineC instanceof StandardEngine ) { + return ((StandardEngine)engineC).getBaseDir(); + } + return System.getProperty("catalina.base"); + } /** * Process the default configuration file, if it exists. + * The default config must be read with the container loader - so + * container servlets can be loaded */ private void defaultConfig() { long t1=System.currentTimeMillis(); // Open the default web.xml file, if it exists + if( defaultWebXml==null && context instanceof StandardContext ) { + defaultWebXml=((StandardContext)context).getDefaultWebXml(); + } + // set the default if we don't have any overrides + if( defaultWebXml==null ) getDefaultWebXml(); + File file = new File(this.defaultWebXml); if (!file.isAbsolute()) { - file = new File(System.getProperty("catalina.base"), + file = new File(getBaseDir(), this.defaultWebXml); } - FileInputStream stream = null; + + InputStream stream = null; + //if( ! file.exists() ) { + // try using resource ?? + + //} try { + // XXX why all this instead of exists() ? stream = new FileInputStream(file.getCanonicalPath()); stream.close(); stream = null; @@ -673,6 +686,9 @@ if (context instanceof StandardContext) ((StandardContext) context).setReplaceWelcomeFiles(true); webDigester.clear(); + webDigester.setClassLoader(this.getClass().getClassLoader()); + //log.info( "Using cl: " + webDigester.getClassLoader()); + webDigester.setUseContextClassLoader(false); webDigester.push(context); webDigester.parse(is); } catch (SAXParseException e) { @@ -785,8 +801,8 @@ private synchronized void start() { // Called from StandardContext.start() - if (debug > 0) - log.info(sm.getString("contextConfig.start")); + if (log.isDebugEnabled()) + log.debug(sm.getString("contextConfig.start")); context.setConfigured(false); ok = true; @@ -822,6 +838,7 @@ } } + // Configure a certificates exposer valve, if required if (ok) certificatesConfig(); @@ -1019,7 +1036,6 @@ } - /** * Scan for and configure all tag library descriptors found in this * web application. @@ -1027,6 +1043,7 @@ * @exception Exception if a fatal input/output or parsing error occurs */ private void tldScan() throws Exception { + long t1=System.currentTimeMillis(); // Acquire this list of TLD resource paths to be processed Set resourcePaths = tldScanResourcePaths(); @@ -1036,20 +1053,15 @@ while (paths.hasNext()) { String path = (String) paths.next(); if (path.endsWith(".jar")) { - long t1=System.currentTimeMillis(); tldScanJar(path); - long t2=System.currentTimeMillis(); - if( (t2-t1 ) > 200 ) - log.info("Processed tld jar " + path + " " + ( t2-t1)); } else { - long t1=System.currentTimeMillis(); tldScanTld(path); - long t2=System.currentTimeMillis(); - if( (t2-t1 ) > 200 ) - log.info("Processed tld " + path + " " + ( t2-t1)); - } } + long t2=System.currentTimeMillis(); + if( context instanceof StandardContext ) { + ((StandardContext)context).setTldScanTime(t2-t1); + } } @@ -1220,7 +1232,6 @@ * accumulating the list of resource paths */ private Set tldScanResourcePaths() throws IOException { - if (log.isDebugEnabled()) { log.debug(" Accumulating TLD resource paths"); }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]