[jboss-cvs] JBossAS SVN: r111866 - in projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914: src/main/java/org/jboss/ejb3/proxy/clustered/registry and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Wed Jul 27 15:49:36 EDT 2011


Author: bmaxwell
Date: 2011-07-27 15:49:36 -0400 (Wed, 27 Jul 2011)
New Revision: 111866

Modified:
   projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914/
   projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914/src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java
Log:
[JBPAPP-6914] allow default load balance policy to be configured


Property changes on: projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914
___________________________________________________________________
Added: svn:mergeinfo
   + /projects/ejb3/trunk/proxy-clustered:111863

Modified: projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914/src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java
===================================================================
--- projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914/src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java	2011-07-27 19:43:02 UTC (rev 111865)
+++ projects/ejb3/branches/jboss-ejb3-proxy-clustered-1.0.3_JBPAPP-6914/src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java	2011-07-27 19:49:36 UTC (rev 111866)
@@ -81,7 +81,11 @@
    private Map<String, ProxyClusteringInfo> beanInfosByProxyFactory = new ConcurrentHashMap<String, ProxyClusteringInfo>();
    /** HATargets for each container, stored in a map keyed by family name */
    private ConcurrentMap<String, Map<String, HATarget>> haTargetsByContainerName = new ConcurrentHashMap<String, Map<String, HATarget>>();
-   
+
+   /* JBPAPP-6869 - configure default load balance policy */
+   private Class defaultLoadBalancePolicyClass = RoundRobin.class;
+   private Class defaultStickyLoadBalancePolicyClass = FirstAvailable.class;
+
    // --------------------------------------------------------------------------------||
    // Required Implementations -------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -271,6 +275,27 @@
       this.loadBalancePolicies = loadBalancePolicies;
    }
 
+   public String getDefaultLoadBalancePolicy()
+   {
+      return defaultLoadBalancePolicyClass.getName();
+   }
+   public void setDefaultLoadBalancePolicy(String defaultLoadBalancePolicy)
+   {
+      log.debug("Changing default Load Balance Policy to " + defaultLoadBalancePolicy);
+      this.defaultLoadBalancePolicyClass = classForPolicy(defaultLoadBalancePolicy);
+   }
+   
+   public String getDefaultStickyLoadBalancePolicy()
+   {
+      return defaultStickyLoadBalancePolicyClass.getName();
+   }
+   
+   public void setDefaultStickyLoadBalancePolicy(String defaultStickyLoadBalancePolicy)
+   {
+      log.debug("Changing default Sticky Load Balance Policy to " + defaultStickyLoadBalancePolicy);
+      this.defaultStickyLoadBalancePolicyClass = classForPolicy(defaultStickyLoadBalancePolicy);
+   }
+
    // --------------------------------------------------------------------------------||
    // Private ------------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -291,46 +316,16 @@
    {
       if (lbpClassKey == null || lbpClassKey.length() == 0 || lbpClassKey.equals(ClusteredDefaults.LOAD_BALANCE_POLICY_DEFAULT))
       {
-         return defaultSticky ? FirstAvailable.class : RoundRobin.class;
+         //return defaultSticky ? FirstAvailable.class : RoundRobin.class;
+         return defaultSticky ? defaultStickyLoadBalancePolicyClass : defaultLoadBalancePolicyClass;
       }
       else
       {
          Class<LoadBalancePolicy> lbPolicyClass = loadBalancePolicies == null ? null : loadBalancePolicies.get(lbpClassKey);
+
          if (lbPolicyClass == null)
-         {
-            // Try to use the string as a classname
-            String className = lbpClassKey;
-            
-            // If it's a simple string, prepend a standard package
-            if (lbpClassKey.indexOf('.') < 0)
-            {
-               className = RoundRobin.class.getPackage().getName() + "." + lbpClassKey;
-            }
-            
-            try
-            {
-               lbPolicyClass = (Class<LoadBalancePolicy>) Thread.currentThread().getContextClassLoader().loadClass(className);
-            }
-            catch (ClassNotFoundException e)
-            {
-               // If it's a simple string, prepend a different standard package
-               if (lbpClassKey.indexOf('.') < 0)
-               {
-                  className = FirstAvailable.class.getPackage().getName() + "." + lbpClassKey;
-                  try
-                  {
-                     lbPolicyClass = (Class<LoadBalancePolicy>) Thread.currentThread().getContextClassLoader().loadClass(className);
-                  }
-                  catch (ClassNotFoundException ignored) {}
-               }
-               
-               if (lbPolicyClass == null)
-               {
-                  throw new IllegalStateException("Cannot determine LoadBalancePolicy class for key " + lbpClassKey);
-               }
-            }
-         }
-         
+            lbPolicyClass = classForPolicy(lbpClassKey);
+
          return lbPolicyClass;
       }      
    }
@@ -347,6 +342,40 @@
       Map<String, HATarget> containerMap = getHATargets(containerName);      
       containerMap.put(familyName, info.getHaTarget());
    }
+
+   private Class classForPolicy(String lbpClassKey)
+   {
+      String className = lbpClassKey;
+      Class lbPolicyClass = null;
+
+      // If it's a simple string, prepend a standard package
+      if (lbpClassKey.indexOf('.') < 0)
+      {
+         className = RoundRobin.class.getPackage().getName() + "." + lbpClassKey;
+      }
+      try
+      {
+         lbPolicyClass = (Class<LoadBalancePolicy>) Thread.currentThread().getContextClassLoader().loadClass(className);
+      }
+      catch (ClassNotFoundException e)
+      {
+         // If it's a simple string, prepend a different standard package
+         if (lbpClassKey.indexOf('.') < 0)
+         {
+            className = FirstAvailable.class.getPackage().getName() + "." + lbpClassKey;
+            try
+            {
+               lbPolicyClass = (Class<LoadBalancePolicy>) Thread.currentThread().getContextClassLoader().loadClass(className);
+            }
+            catch (ClassNotFoundException ignored) {}
+         }
+         if (lbPolicyClass == null)
+         {
+            throw new IllegalStateException("Cannot determine LoadBalancePolicy class for key " + lbpClassKey);
+         }
+      }
+      return lbPolicyClass;
+   }
    
    public static String getPartitionName(ClusterConfigMetaData metadata)
    {



More information about the jboss-cvs-commits mailing list