[jboss-cvs] JBossAS SVN: r63577 - branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jun 20 03:29:47 EDT 2007


Author: scott.stark at jboss.org
Date: 2007-06-20 03:29:47 -0400 (Wed, 20 Jun 2007)
New Revision: 63577

Modified:
   branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5.java
   branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5MBean.java
Log:
ASPATCH-234, preload the tomcat classes using commons logging during create

Modified: branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5.java
===================================================================
--- branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5.java	2007-06-19 23:31:00 UTC (rev 63576)
+++ branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5.java	2007-06-20 07:29:47 UTC (rev 63577)
@@ -22,6 +22,7 @@
 package org.jboss.web.tomcat.tc5;
 
 import java.io.File;
+import java.lang.reflect.Field;
 import java.util.Iterator;
 import java.util.Properties;
 import java.util.Set;
@@ -165,9 +166,62 @@
    /** The service used to flush authentication cache on session invalidation. */
    private JaasSecurityManagerServiceMBean secMgrService;
    
-   /** */
+   /** The package prefixes of classes to exclude from class loading */
    private String[] filteredPackages;
-   
+
+   /** The class names of web container classes using commons logging that
+    * need to be preloaded to ensure the logging classes are configured in the
+    * context of the web container class loader. 
+    */
+   private String[] loggingClasses = {
+         "org.apache.catalina.authenticator.AuthenticatorBase",
+         "org.apache.catalina.authenticator.BasicAuthenticator",
+         "org.apache.catalina.authenticator.DigestAuthenticator",
+         "org.apache.catalina.authenticator.FormAuthenticator",
+         "org.apache.catalina.connector.Connector",
+         "org.apache.catalina.connector.CoyoteAdapter",
+         "org.apache.catalina.connector.MapperListener",
+         "org.apache.catalina.core.ApplicationDispatcher",
+         "org.apache.catalina.core.AprLifecycleListener",
+         "org.apache.catalina.core.ContainerBase",
+         "org.apache.catalina.core.NamingContextListener",
+         "org.apache.catalina.core.StandardContext",
+         "org.apache.catalina.core.StandardHostValve",
+         "org.apache.catalina.core.StandardEngine",
+         "org.apache.catalina.core.StandardPipeline",
+         "org.apache.catalina.core.StandardService",
+         "org.apache.catalina.core.StandardServer",
+         "org.apache.catalina.deploy.SecurityCollection",
+         "org.apache.catalina.mbeans.MBeanUtils",
+         "org.apache.catalina.mbeans.GlobalResourcesLifecycleListener",
+         "org.apache.catalina.mbeans.ServerLifecycleListener",
+         "org.apache.catalina.realm.RealmBase",
+         "org.apache.catalina.session.ManagerBase",
+         "org.apache.catalina.session.PersistentManagerBase",
+         "org.apache.catalina.valves.ExtendedAccessLogValve",
+         "org.apache.catalina.valves.ValveBase",
+         "org.apache.tomcat.util.digester.Digester",
+         "org.apache.tomcat.util.digester.GenericParser",
+         "org.apache.tomcat.util.digester.XercesParser",
+         "org.apache.tomcat.util.http.ServerCookie",
+         "org.apache.tomcat.util.net.AprEndpoint",
+         "org.apache.tomcat.util.net.PoolTcpEndpoint",
+         "org.apache.tomcat.util.threads.ThreadPool",
+         "org.apache.jasper.compiler.Compiler",
+         "org.apache.jasper.EmbeddedServletOptions",
+         "org.apache.jasper.JspCompilationContext",
+         "org.apache.jasper.compiler.JspConfig",
+         "org.apache.jasper.compiler.JspReader",
+         "org.apache.jasper.compiler.JspRuntimeContext",
+         "org.apache.jasper.compiler.SmapUtil",
+         "org.apache.jasper.compiler.SmapUtil$SDEInstaller",
+         "org.apache.jasper.compiler.TldLocationsCache",
+         "org.apache.jasper.runtime.PageContextImpl",
+         "org.apache.jasper.servlet.JspServlet",
+         "org.apache.jasper.servlet.JspServletWrapper",
+         "org.apache.jasper.xmlparser.UTF8Reader",
+   };
+
    /** Hold a proxy reference to myself, used when registering to MainDeployer */
    private SubDeployerExt thisProxy;
 
@@ -407,6 +461,16 @@
       this.filteredPackages = pkgs;
    }
 
+   public String[] getLoggingClasses()
+   {
+      return loggingClasses;
+   }
+
+   public void setLoggingClasses(String[] loggingClasses)
+   {
+      this.loggingClasses = loggingClasses;
+   }
+
    public void startService()
       throws Exception
    {
@@ -525,6 +589,9 @@
          
          server.addNotificationListener(ServerImplMBean.OBJECT_NAME, this, null, null);         
       }
+
+      // L
+      loadLoggingClasses();
    }
 
 
@@ -662,7 +729,37 @@
       deployer.init(config);
       return deployer;
    } 
-   
+
+   protected void loadLoggingClasses()
+   {
+      ClassLoader loader = Thread.currentThread().getContextClassLoader();
+      int count = loggingClasses != null ? loggingClasses.length : 0;
+      for(int n = 0; n < count; n ++)
+      {
+         String name = loggingClasses[n];
+         try
+         {
+            Class c = loader.loadClass(name);
+            try
+            {
+               Field flog = c.getDeclaredField("log");
+               flog.setAccessible(true);
+               flog.get(null);
+            }
+            catch(NoSuchFieldException e)
+            {
+               Field flog = c.getDeclaredField("logger");
+               flog.setAccessible(true);
+               flog.get(null);
+            }
+         }
+         catch(Throwable e)
+         {
+            log.debug("Failed to load loggingClass: "+name, e);
+         }
+      }
+   }
+
    /**
     * Start all the connectors
     * 

Modified: branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5MBean.java
===================================================================
--- branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5MBean.java	2007-06-19 23:31:00 UTC (rev 63576)
+++ branches/JBoss_4_0_5_GA_CP_ASPATCH-234/tomcat/src/main/org/jboss/web/tomcat/tc5/Tomcat5MBean.java	2007-06-20 07:29:47 UTC (rev 63577)
@@ -213,4 +213,16 @@
     * @param pkgs
     */ 
    public void setFilteredPackages(String[] pkgs);
+
+   /**
+    * 
+    * @return
+    */
+   public String[] getLoggingClasses();
+
+   /**
+    * 
+    * @param loggingClasses
+    */
+   public void setLoggingClasses(String[] loggingClasses);
 }




More information about the jboss-cvs-commits mailing list