Index: src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java
===================================================================
--- src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java	(revision 111779)
+++ src/main/java/org/jboss/ejb3/proxy/clustered/registry/ProxyClusteringRegistry.java	(working copy)
@@ -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,23 @@
       this.loadBalancePolicies = loadBalancePolicies;
    }
 
+   public String getDefaultLoadBalancePolicy()
+   {
+      return defaultLoadBalancePolicyClass.getName();
+   }
+   public void setDefaultLoadBalancePolicy(String defaultLoadBalancePolicy)
+   {
+      this.defaultLoadBalancePolicyClass = classForPolicy(defaultLoadBalancePolicy);
+   }
+   public String getDefaultStickyLoadBalancePolicy()
+   {
+      return defaultStickyLoadBalancePolicyClass.getName();
+   }
+   public void setDefaultStickyLoadBalancePolicy(String defaultStickyLoadBalancePolicy)
+   {
+      this.defaultStickyLoadBalancePolicyClass = classForPolicy(defaultStickyLoadBalancePolicy);
+   }
+
    // --------------------------------------------------------------------------------||
    // Private ------------------------------------------------------------------------||
    // --------------------------------------------------------------------------------||
@@ -291,46 +312,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 +338,40 @@
       Map<String, HATarget> containerMap = getHATargets(containerName);      
       containerMap.put(familyName, info.getHaTarget());
    }
+
+   private Class classForPolicy(String lbpClassKey)
+   {
+      String className = null;
+      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)
    {
