Author: markt
Date: Sat Dec 17 22:52:18 2011
New Revision: 1220293

URL: http://svn.apache.org/viewvc?rev=1220293&view=rev
Log:
Fix cyclic JAR dependency and add check to ensure it doesn't return

Modified:
    tomcat/trunk/java/org/apache/catalina/startup/Catalina.java
    tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
    tomcat/trunk/res/checkstyle/org-import-control.xml

Modified: tomcat/trunk/java/org/apache/catalina/startup/Catalina.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/Catalina.java?rev=1220293&r1=1220292&r2=1220293&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/Catalina.java (original)
+++ tomcat/trunk/java/org/apache/catalina/startup/Catalina.java Sat Dec 17 
22:52:18 2011
@@ -22,6 +22,7 @@ import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.lang.reflect.Constructor;
 import java.net.Socket;
 import java.util.ArrayList;
 import java.util.HashMap;
@@ -34,13 +35,13 @@ import org.apache.catalina.LifecycleExce
 import org.apache.catalina.LifecycleState;
 import org.apache.catalina.Server;
 import org.apache.catalina.core.StandardServer;
-import org.apache.catalina.ha.ClusterRuleSet;
 import org.apache.catalina.security.SecurityConfig;
 import org.apache.juli.ClassLoaderLogManager;
 import org.apache.tomcat.util.ExceptionUtils;
 import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.digester.Digester;
 import org.apache.tomcat.util.digester.Rule;
+import org.apache.tomcat.util.digester.RuleSet;
 import org.apache.tomcat.util.log.SystemLogHandler;
 import org.apache.tomcat.util.res.StringManager;
 import org.xml.sax.Attributes;
@@ -372,13 +373,13 @@ public class Catalina {
         digester.addRuleSet(new EngineRuleSet("Server/Service/"));
         digester.addRuleSet(new HostRuleSet("Server/Service/Engine/"));
         digester.addRuleSet(new ContextRuleSet("Server/Service/Engine/Host/"));
-        digester.addRuleSet(new 
ClusterRuleSet("Server/Service/Engine/Host/Cluster/"));
+        addClusterRuleSet(digester, "Server/Service/Engine/Host/Cluster/");
         digester.addRuleSet(new 
NamingRuleSet("Server/Service/Engine/Host/Context/"));
 
         // When the 'engine' is found, set the parentClassLoader.
         digester.addRule("Server/Service/Engine",
                          new SetParentClassLoaderRule(parentClassLoader));
-        digester.addRuleSet(new 
ClusterRuleSet("Server/Service/Engine/Cluster/"));
+        addClusterRuleSet(digester, "Server/Service/Engine/Cluster/");
 
         long t2=System.currentTimeMillis();
         if (log.isDebugEnabled()) {
@@ -388,6 +389,27 @@ public class Catalina {
 
     }
 
+    /**
+     * Cluster support is optional. The JARs may have been removed.
+     */
+    private void addClusterRuleSet(Digester digester, String prefix) {
+        Class<?> clazz = null;
+        Constructor<?> constructor = null;
+        try {
+            clazz = Class.forName("org.apache.catalina.ha.ClusterRuleSet");
+            constructor = clazz.getConstructor(String.class);
+            RuleSet ruleSet = (RuleSet) constructor.newInstance(prefix);
+            digester.addRuleSet(ruleSet);
+        } catch (Exception e) {
+            if (log.isDebugEnabled()) {
+                log.debug(sm.getString("catalina.noCluster",
+                        e.getClass().getName() + ": " +  e.getMessage()), e);
+            } else if (log.isInfoEnabled()) {
+                log.info(sm.getString("catalina.noCluster",
+                        e.getClass().getName() + ": " +  e.getMessage()));
+            }
+        }
+    }
 
     /**
      * Create and configure the Digester we will be using for shutdown.

Modified: tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties?rev=1220293&r1=1220292&r2=1220293&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties 
(original)
+++ tomcat/trunk/java/org/apache/catalina/startup/LocalStrings.properties Sat 
Dec 17 22:52:18 2011
@@ -14,6 +14,7 @@
 # limitations under the License.
 
 catalina.configFail=Unable to load server configuration from [{0}]
+catalina.noCluster=Cluster RuleSet not found due to [{0}]. Cluster 
configuration disabled.
 catalina.shutdownHookFail=The shutdown hook experienced an error while trying 
to stop the server
 catalina.stopServer=No shutdown port configured. Shut down server through OS 
signal. Server not shut down.
 contextConfig.altDDNotFound=alt-dd file {0} not found

Modified: tomcat/trunk/res/checkstyle/org-import-control.xml
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/res/checkstyle/org-import-control.xml?rev=1220293&r1=1220292&r2=1220293&view=diff
==============================================================================
--- tomcat/trunk/res/checkstyle/org-import-control.xml (original)
+++ tomcat/trunk/res/checkstyle/org-import-control.xml Sat Dec 17 22:52:18 2011
@@ -40,6 +40,8 @@
     <allow pkg="javax.persistence"/>
     <allow pkg="javax.servlet"/>
     <allow pkg="org.apache.catalina"/>
+    <disallow pkg="org.apache.catalina.ha"/>
+    <disallow pkg="org.apache.catalina.tribes"/>
     <allow pkg="org.apache.coyote"/>
     <allow pkg="org.apache.juli"/>
     <allow pkg="org.apache.naming"/>
@@ -62,6 +64,7 @@
       <disallow pkg="org.apache.coyote"/>
       <disallow pkg="org.apache.naming"/>
       <allow pkg="org.apache.catalina.ha"/>
+      <allow pkg="org.apache.catalina.tribes"/>
     </subpackage>
     <subpackage name="tribes">
       <disallow pkg="javax.annotation"/>



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

Reply via email to