[jboss-cvs] JBossAS SVN: r67308 - in projects/metadata/trunk/src: main/resources/schema and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Tue Nov 20 16:18:36 EST 2007


Author: bstansberry at jboss.com
Date: 2007-11-20 16:18:35 -0500 (Tue, 20 Nov 2007)
New Revision: 67308

Added:
   projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testEjbthreeClusterConfig.xml
Modified:
   projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java
   projects/metadata/trunk/src/main/resources/schema/jboss_5_0.xsd
   projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
Log:
[EJBTHREE-1110] Support configuring home-load-balancy-policy

Modified: projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java
===================================================================
--- projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java	2007-11-20 21:16:56 UTC (rev 67307)
+++ projects/metadata/trunk/src/main/java/org/jboss/metadata/ejb/jboss/ClusterConfigMetaData.java	2007-11-20 21:18:35 UTC (rev 67308)
@@ -96,7 +96,8 @@
    }
 
    /**
-    * Get the EJB 3.x bean LoadBalancePolicy.
+    * Get the EJB 3.x bean LoadBalancePolicy. This is an alias
+    * for {@link #getBeanLoadBalancePolicy()}.
     * 
     * @return the loadBalancePolicy.
     */
@@ -106,7 +107,8 @@
    }
 
    /**
-    * Set the EJB 3.x bean LoadBalancePolicy.
+    * Set the EJB 3.x bean LoadBalancePolicy. This is an alias
+    * for {@link #setBeanLoadBalancePolicy(String)}.
     * 
     * @param loadBalancePolicy The loadBalancePolicy to set.
     */

Modified: projects/metadata/trunk/src/main/resources/schema/jboss_5_0.xsd
===================================================================
--- projects/metadata/trunk/src/main/resources/schema/jboss_5_0.xsd	2007-11-20 21:16:56 UTC (rev 67307)
+++ projects/metadata/trunk/src/main/resources/schema/jboss_5_0.xsd	2007-11-20 21:18:35 UTC (rev 67308)
@@ -1627,7 +1627,11 @@
 
       <xsd:sequence>
          <xsd:element name="partition-name" type="jboss:partition-nameType" minOccurs="0"/>
-         <xsd:element name="load-balance-policy" type="jboss:load-balance-policyType" minOccurs="0"/>
+         <xsd:element name="home-load-balance-policy" type="jboss:load-balance-policyType" minOccurs="0"/>
+         <xsd:choice>
+            <xsd:element name="bean-load-balance-policy" type="jboss:bean-load-balance-policyType" minOccurs="0"/>
+            <xsd:element name="load-balance-policy" type="jboss:load-balance-policyType" minOccurs="0"/>
+         </xsd:choice>
       </xsd:sequence>
       <xsd:attribute name="id" type="xsd:ID"/>
    </xsd:complexType>
@@ -1638,8 +1642,9 @@
       <xsd:annotation>
          <xsd:documentation> The partition-name element indicates the name of the HAPartition to be
             used by the container to exchange clustering information. This is a name and *not* a JNDI
-            name. Given name will be prefixed by "/HASessionState/" by the container to get the actual
-            JNDI name of the HAPartition. If not, jboss will assume partition-name = "DefaultPartition".
+            name. Given name will be prefixed by "/HAPartition/" by the container to get the actual
+            JNDI name of the HAPartition. If not set, jboss will  default to the value of system 
+            property "jboss.partition.name", or "DefaultPartition" if that system property is not set.
          </xsd:documentation>
       </xsd:annotation>
       <xsd:simpleContent>
@@ -1649,11 +1654,52 @@
 
    <!-- **************************************************** -->
 
+   <xsd:complexType name="home-load-balance-policyType">
+      <xsd:annotation>
+         <xsd:documentation> The home-load-balance-policy element indicates the 
+            name of the java class to be used to load balance calls in an EJB's 
+            home proxy. If not set, jboss will assume
+            home-load-balance-policy = "org.jboss.ha.client.loadbalance.RandomRobin".
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:simpleContent>
+         <xsd:restriction base="javaee:string"/>
+      </xsd:simpleContent>
+   </xsd:complexType>
+
+   <!-- **************************************************** -->
+
+   <xsd:complexType name="bean-load-balance-policyType">
+      <xsd:annotation>
+         <xsd:documentation> The bean-load-balance-policy element indicates the  
+            name of the java class to be used to load balance calls in the 
+            bean proxy. If not set, for stateless beans jboss will assume
+            bean-load-balance-policy="org.jboss.ha.client.loadbalance.RandomRobin"
+            and for stateful beans it will assume 
+            bean-load-balance-policy="org.jboss.ha.client.loadbalance.FirstAvailable".
+            The bean-load-balance-policy element and the load-balance-policy
+            element specify the same thing; configurations should choose one or
+            the other; which is chosen doesn't matter.
+         </xsd:documentation>
+      </xsd:annotation>
+      <xsd:simpleContent>
+         <xsd:restriction base="javaee:string"/>
+      </xsd:simpleContent>
+   </xsd:complexType>
+
+   <!-- **************************************************** -->
+
    <xsd:complexType name="load-balance-policyType">
       <xsd:annotation>
-         <xsd:documentation> The home-load-balance-policy element indicates the java class name to be
-            used to load balance calls in the home proxy. If not, jboss will assume
-            home-load-balance-policy = "org.jboss.ha.framework.interfaces.RoundRobin".
+         <xsd:documentation> The load-balance-policy element indicates the   
+            name of the java class to be used to load balance calls in the 
+            bean proxy. If not set, for stateless beans jboss will assume
+            load-balance-policy="org.jboss.ha.client.loadbalance.RandomRobin"
+            and for stateful beans it will assume 
+            load-balance-policy="org.jboss.ha.client.loadbalance.FirstAvailable".
+            The bean-load-balance-policy element and the load-balance-policy
+            element specify the same thing; configurations should choose one or
+            the other; which is chosen doesn't matter.
          </xsd:documentation>
       </xsd:annotation>
       <xsd:simpleContent>

Modified: projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
===================================================================
--- projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java	2007-11-20 21:16:56 UTC (rev 67307)
+++ projects/metadata/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java	2007-11-20 21:18:35 UTC (rev 67308)
@@ -32,6 +32,7 @@
 import org.jboss.metadata.ApplicationMetaData;
 import org.jboss.metadata.BeanMetaData;
 import org.jboss.metadata.ConfigurationMetaData;
+import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
 import org.jboss.metadata.ejb.jboss.ContainerConfigurationMetaData;
 import org.jboss.metadata.ejb.jboss.InvokerBindingMetaData;
 import org.jboss.metadata.ejb.jboss.InvokerBindingsMetaData;
@@ -864,7 +865,54 @@
       assertEquals("port.component.name", portComponent.getPortComponentName());
       assertEquals("port/component/uri", portComponent.getPortComponentURI());
    }
+   
+   public void testEjbthreeClusterConfig() throws Exception
+   {
+      JBossXBTestDelegate xbdelegate = (JBossXBTestDelegate) super.getDelegate();
+      xbdelegate.setValidateSchema(true);
+      JBossMetaData jbossXmlMetaData = unmarshal();
+      JBossEnterpriseBeansMetaData enterpriseBeans = jbossXmlMetaData.getEnterpriseBeans();
+      assertNotNull(enterpriseBeans);
+      assertEquals(4, enterpriseBeans.size());
+      
+      JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBeans.get("SimpleBean");
+      assertNotNull(bean);
+      ClusterConfigMetaData clusterConfig = bean.getClusterConfig();
+      assertNotNull(clusterConfig);      
+      assertEquals("ClusterConfigPartition", clusterConfig.getPartitionName());
+      assertEquals("SimpleLBP", clusterConfig.getLoadBalancePolicy());
+      assertEquals("SimpleLBP", clusterConfig.getBeanLoadBalancePolicy());
+      assertNull(clusterConfig.getHomeLoadBalancePolicy());
+      
+      bean = (JBossSessionBeanMetaData) enterpriseBeans.get("HomeAndBeanBean");
+      assertNotNull(bean);
+      clusterConfig = bean.getClusterConfig();
+      assertNotNull(clusterConfig);      
+      assertEquals("ClusterConfigPartition", clusterConfig.getPartitionName());
+      assertEquals("BeanLBP", clusterConfig.getLoadBalancePolicy());
+      assertEquals("BeanLBP", clusterConfig.getBeanLoadBalancePolicy());
+      assertEquals("HomeLBP", clusterConfig.getHomeLoadBalancePolicy());
+      
+      bean = (JBossSessionBeanMetaData) enterpriseBeans.get("HomeAndSimpleBean");
+      assertNotNull(bean);
+      clusterConfig = bean.getClusterConfig();
+      assertNotNull(clusterConfig);      
+      assertEquals("ClusterConfigPartition", clusterConfig.getPartitionName());
+      assertEquals("SimpleLBP", clusterConfig.getLoadBalancePolicy());
+      assertEquals("SimpleLBP", clusterConfig.getBeanLoadBalancePolicy());
+      assertEquals("HomeLBP", clusterConfig.getHomeLoadBalancePolicy());
+      
+      bean = (JBossSessionBeanMetaData) enterpriseBeans.get("HomeOnlyBean");
+      assertNotNull(bean);
+      clusterConfig = bean.getClusterConfig();
+      assertNotNull(clusterConfig);      
+      assertNull(clusterConfig.getPartitionName());
+      assertNull(clusterConfig.getLoadBalancePolicy());
+      assertNull(clusterConfig.getBeanLoadBalancePolicy());
+      assertEquals("HomeLBP", clusterConfig.getHomeLoadBalancePolicy());
+   }
 
+
    private <T> Set<T> toSet(T ... obj)
    {
       Set<T> set = new HashSet<T>();

Added: projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testEjbthreeClusterConfig.xml
===================================================================
--- projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testEjbthreeClusterConfig.xml	                        (rev 0)
+++ projects/metadata/trunk/src/test/resources/org/jboss/test/metadata/ejb/JBoss50_testEjbthreeClusterConfig.xml	2007-11-20 21:18:35 UTC (rev 67308)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<jboss xmlns="http://www.jboss.com/xml/ns/javaee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://www.jboss.com/xml/ns/javaee http://www.jboss.org/j2ee/schema/jboss_5_0.xsd"
+    version="3.0">
+    <enterprise-beans>
+        <session>
+            <ejb-name>SimpleBean</ejb-name>
+            <cluster-config>
+               <partition-name>ClusterConfigPartition</partition-name>
+               <load-balance-policy>SimpleLBP</load-balance-policy>
+            </cluster-config>
+        </session>
+        <session>
+            <ejb-name>HomeAndBeanBean</ejb-name>
+            <cluster-config>
+               <partition-name>ClusterConfigPartition</partition-name>
+               <home-load-balance-policy>HomeLBP</home-load-balance-policy>
+               <bean-load-balance-policy>BeanLBP</bean-load-balance-policy>
+            </cluster-config>
+        </session>
+        <session>
+            <ejb-name>HomeAndSimpleBean</ejb-name>
+            <cluster-config>
+               <partition-name>ClusterConfigPartition</partition-name>
+               <home-load-balance-policy>HomeLBP</home-load-balance-policy>
+               <load-balance-policy>SimpleLBP</load-balance-policy>
+            </cluster-config>
+        </session>
+        <session>
+            <ejb-name>HomeOnlyBean</ejb-name>
+            <cluster-config>
+               <home-load-balance-policy>HomeLBP</home-load-balance-policy>
+            </cluster-config>
+        </session>
+    </enterprise-beans>
+</jboss>




More information about the jboss-cvs-commits mailing list