[jboss-cvs] JBossAS SVN: r72388 - branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Apr 17 16:47:45 EDT 2008


Author: galder.zamarreno at jboss.com
Date: 2008-04-17 16:47:45 -0400 (Thu, 17 Apr 2008)
New Revision: 72388

Added:
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicy.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyBase.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyMBean.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimple.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimpleMBean.java
Modified:
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicy.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicyBase.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicySimple.java
   branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonSupport.java
Log:
[JBAS-5170] Extended HASingleton election policy strategy implemented to be able to cope with heterogeneous HASingleton deployments.

Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicy.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicy.java	                        (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicy.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -0,0 +1,52 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.singleton;
+
+/**
+ * Extended HASingleton election policy that allows setting HASingleton's name. 
+ * This enables election policies to work correctly in heterogenous topologies
+ * where HASingletons are not deployed in all nodes in the cluster.
+ * 
+ * By setting the HASingleton name in the election policy, the policy is able
+ * to query the DistributedReplicantManager in order to find out the List nodes 
+ * where the HASingleton is deployed and then, choose from this list the node 
+ * that should be running it.  
+ * 
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public interface ExtendedElectionPolicy extends HASingletonElectionPolicy
+{
+   /**
+    * Called by the HASingleton, during the start service phase, to set the 
+    * name with which the singleton is registered with the HAPartition.
+    * 
+    * @param serviceName the singleton service name.
+    */
+   void setSingletonName(String serviceName);
+
+   /**
+    * Get the singleton name for this election policy. 
+    * 
+    * @return the singleton service name.
+    */
+   String getSingletonName();    
+}

Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyBase.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyBase.java	                        (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyBase.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -0,0 +1,137 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.singleton;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jboss.ha.framework.interfaces.ClusterNode;
+import org.jboss.ha.framework.interfaces.DistributedReplicantManager;
+import org.jboss.ha.framework.interfaces.HAPartition;
+
+/**
+ * Base extended election policy providing helper methods for concrete 
+ * implementations.
+ * 
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public abstract class ExtendedElectionPolicyBase extends HASingletonElectionPolicyBase
+      implements ExtendedElectionPolicyMBean
+{
+   private String singletonName;
+
+   public String getSingletonName()
+   {
+      return singletonName;
+   }
+
+   public void setSingletonName(String serviceName)
+   {
+      if (log.isTraceEnabled())
+      {
+         log.trace("Singleton name set to " + serviceName);
+      }
+      
+      singletonName = serviceName;
+   }
+
+   public ClusterNode pickSingleton()
+   {
+      List<ClusterNode> candidates = getCandidates();
+      if (candidates == null)
+      {
+         log.debug("List of cluster node candidates where to run the singleton is null");
+         return null;
+      }
+             
+      return elect(candidates);
+   }
+   
+   @Override
+   public boolean isElectedMaster()
+   {
+      ClusterNode selectedNode = pickSingleton();
+      if (selectedNode != null)
+      {
+         return selectedNode.equals(getHAPartition().getClusterNode());
+      }
+      
+      return false;
+   }
+   
+   /**
+    * Get the list of candidate {@link ClusterNode} instances where the 
+    * singleton could be deployed.
+    * 
+    * @return List of {@link ClusterNode} instances.
+    */
+   protected List<ClusterNode> getCandidates() 
+   {
+      HAPartition partition = getHAPartition();
+      
+      if (partition == null)
+      {
+         throw new IllegalStateException("HAPartition has not been set");
+      }
+      
+      DistributedReplicantManager drm = partition.getDistributedReplicantManager();
+      /* retrieve node names where singleton is deployed */
+      List<String> nodeNames = drm.lookupReplicantsNodeNames(getSingletonName());
+      if (nodeNames != null)
+      {
+         ClusterNode[] allNodes = partition.getClusterNodes();
+         List<ClusterNode> nodesSingletonIn = new ArrayList<ClusterNode>(nodeNames.size());
+         
+         /* For each node in the list of nodes where the singleton is deployed, 
+          * find the corresponding ClusterNode object and add it to the list of 
+          * ClusterNode candidates where the singleton can run. 
+          * 
+          * This is certainly not the most efficient way to do it's we can do 
+          * given the limited DRM API in AS 4.x. */
+         for (String nodeName : nodeNames)
+         {
+            for(int i = 0; i < allNodes.length; i++)
+            {
+               ClusterNode node = allNodes[i];
+               if (node.getName().equals(nodeName))
+               {
+                  nodesSingletonIn.add(node);
+                  break;
+               }
+            }
+         }
+         
+         return nodesSingletonIn;            
+      }
+      
+      return null;
+   }
+   
+   /**
+    * Given a List of candidate {@link ClusterNode} instances, return the 
+    * elected node where the singleton should run.
+    * 
+    * @param candidates List of {@link ClusterNode}.
+    * @return {@link ClusterNode} instance.
+    */
+   protected abstract ClusterNode elect(List<ClusterNode> candidates);
+}
\ No newline at end of file

Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyMBean.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyMBean.java	                        (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicyMBean.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.singleton;
+
+/**
+ * ExtendedHASingletonElectionPolicyMBean.
+ * 
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public interface ExtendedElectionPolicyMBean 
+   extends HASingletonElectionPolicyMBean, ExtendedElectionPolicy
+{
+}

Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimple.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimple.java	                        (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimple.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -0,0 +1,76 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.singleton;
+
+import java.util.List;
+
+import org.jboss.ha.framework.interfaces.ClusterNode;
+
+/**
+ * Simple extended election policy implementation:
+ * 
+ * A simple concrete policy service that decides which node in the cluster 
+ * should be the master node to run certain HASingleton service based on 
+ * attribute "Position". The value will be divided by partition size and only 
+ * remainder will be used. 
+ * 
+ * Let's say partition size is n:
+ * 0 means the first oldest node.
+ * 1 means the 2nd oldest node. 
+ * ...
+ * n-1 means the nth oldest node.
+ * 
+ * -1 means the youngest node.
+ * -2 means the 2nd youngest node.
+ * ...
+ * -n means the nth youngest node.
+ * 
+ * E.g. the following attribute says the singleton will be running on the 3rd 
+ * oldest node of the current partition:
+ * <attribute name="Position">2</attribute>
+ * 
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public class ExtendedElectionPolicySimple extends ExtendedElectionPolicyBase
+      implements ExtendedElectionPolicySimpleMBean
+{
+   private int position = 0; // Default
+   
+   public void setPosition(int pos)
+   {
+      position = pos;
+   }
+
+   public int getPosition()
+   {
+      return position;
+   }
+
+   @Override
+   protected ClusterNode elect(List<ClusterNode> candidates)
+   {
+      int size = candidates.size();
+      int remainder = ((position % size) + size) % size;
+      
+      return candidates.get(remainder);
+   }  
+}

Added: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimpleMBean.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimpleMBean.java	                        (rev 0)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/ExtendedElectionPolicySimpleMBean.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -0,0 +1,32 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ha.singleton;
+
+/**
+ * ExtendedElectionPolicySimpleMBean.
+ * 
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
+public interface ExtendedElectionPolicySimpleMBean 
+   extends HASingletonElectionPolicySimpleMBean, ExtendedElectionPolicy
+{
+}

Modified: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicy.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicy.java	2008-04-17 20:30:37 UTC (rev 72387)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicy.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -3,6 +3,13 @@
 import org.jboss.ha.framework.interfaces.ClusterNode;
 import org.jboss.ha.framework.interfaces.HAPartition;
 
+/**
+ * HASingletonElectionPolicy.
+ * 
+ * @author <a href="mailto:Alex.Fu at novell.com">Alex Fu</a>
+ * @author Brian Stansberry
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
+ */
 public interface HASingletonElectionPolicy
 {
 
@@ -27,17 +34,22 @@
    HAPartition getHAPartition();
 
    /**
-    * Return the elected master node.
-    * @return the master node
+    * Return the elected master node or null if there are no cluster nodes 
+    * where the singleton can be deployed. 
+    * @return the master node or null.
     */
    ClusterNode pickSingleton();
 
    /**
-    * Given the HAPartition, return the elected master node.
+    * Given the HAPartition, return the elected master node or null if there are 
+    * no cluster nodes where the singleton can be deployed. 
     * @param partition
-    * @return the master node
+    * @return the master node or null.
+    * @deprecated HAPartition is now set during the HASingleton start phase, as 
+    * part of the HAPartition set up. Implementations of this method should 
+    * delegate to {@link #pickSingleton()}.
     */
-   ClusterNode pickSingleton(HAPartition partition);
+   @Deprecated ClusterNode pickSingleton(HAPartition partition);
 
    /**
     * Conducts an election and returns whether the managed service
@@ -50,7 +62,10 @@
     * Given the HAPartition, return whether the managed service is the master.
     * @param partition
     * @return true only if the managed service is the master
+    * @deprecated HAPartition is set during the HASingleton start phase, as 
+    * part of the HAPartition set up. Implementations of this method should 
+    * delegate to {@link #isElectedMaster()}. 
     */
-   boolean isElectedMaster(HAPartition partition);
+   @Deprecated boolean isElectedMaster(HAPartition partition);
 
 }
\ No newline at end of file

Modified: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicyBase.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicyBase.java	2008-04-17 20:30:37 UTC (rev 72387)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicyBase.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -21,10 +21,8 @@
  */
 package org.jboss.ha.singleton;
 
-
+import org.jboss.ha.framework.interfaces.ClusterNode;
 import org.jboss.ha.framework.interfaces.HAPartition;
-import org.jboss.ha.framework.server.ClusterPartition;
-import org.jboss.logging.Logger;
 import org.jboss.system.ServiceMBeanSupport;
 
 /**
@@ -32,6 +30,7 @@
  * the master node to run certain HASingleton service.
  * 
  * @author <a href="mailto:afu at novell.com">Alex Fu</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
  * @version $Revision: 46010 $
  */
 public abstract class HASingletonElectionPolicyBase 
@@ -62,6 +61,11 @@
     */
    public void setHAPartition(HAPartition partition)
    {
+      if (log.isTraceEnabled())
+      {
+         log.trace("Partition set to " + partition);
+      }
+      
       this.mPartition = partition;
    }
 
@@ -87,11 +91,18 @@
    /**
     * @see HASingletonElectionPolicyMBean#isElectedMaster(HAPartition)
     */
+   @Deprecated
    public boolean isElectedMaster(HAPartition partition) 
    {
-      if (null == partition)
-         throw new IllegalStateException("parameter cannot be null");
+      return isElectedMaster();
+   }
 
-      return pickSingleton(partition).equals(partition.getClusterNode());
+   /**
+    * @see HASingletonElectionPolicyMBean#pickSingleton(HAPartition)
+    */
+   @Deprecated
+   public ClusterNode pickSingleton(HAPartition partition) 
+   {
+      return pickSingleton();
    }
 }

Modified: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicySimple.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicySimple.java	2008-04-17 20:30:37 UTC (rev 72387)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonElectionPolicySimple.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -46,6 +46,7 @@
  * <attribute name="Position">2</attribute>
  * 
  * @author <a href="mailto:Alex.Fu at novell.com">Alex Fu</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
  * @version $Revision: 46010 $
  */
 public class HASingletonElectionPolicySimple 
@@ -73,16 +74,11 @@
 
    public ClusterNode pickSingleton()
    {
-      return pickSingleton(getHAPartition());
-   }
-   
-   public ClusterNode pickSingleton(HAPartition partition) 
-   {
-      ClusterNode[] nodes = partition.getClusterNodes();
+      ClusterNode[] nodes = getHAPartition().getClusterNodes();
       
       int size = nodes.length;
       int remainder = ((this.mPosition % size) + size) % size;
       
-      return nodes[remainder];
-   }
+      return nodes[remainder];            
+   }   
 }

Modified: branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonSupport.java
===================================================================
--- branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonSupport.java	2008-04-17 20:30:37 UTC (rev 72387)
+++ branches/Branch_4_2/cluster/src/main/org/jboss/ha/singleton/HASingletonSupport.java	2008-04-17 20:47:45 UTC (rev 72388)
@@ -24,9 +24,13 @@
 import java.util.List;
 
 import javax.management.Notification;
+import javax.management.ReflectionException;
 
 import org.jboss.ha.framework.interfaces.ClusterMergeStatus;
 import org.jboss.ha.jmx.HAServiceMBeanSupport;
+import org.jboss.invocation.jrmp.server.JRMPProxyFactoryMBean;
+import org.jboss.mx.util.MBeanProxyExt;
+import org.jboss.mx.util.MBeanProxyInstance;
 
 /** 
  * Base class for HA-Singleton services.
@@ -34,6 +38,7 @@
  * @author <a href="mailto:ivelin at apache.org">Ivelin Ivanov</a>
  * @author <a href="mailto:scott.stark at jboss.org">Scott Stark</a>
  * @author <a href="mailto:dimitris at jboss.org">Dimitris Andreadis</a>
+ * @author <a href="mailto:galder.zamarreno at jboss.com">Galder Zamarreno</a>
  * @version $Revision$
  */
 public class HASingletonSupport extends HAServiceMBeanSupport
@@ -166,7 +171,7 @@
    {   
       boolean isElectedNewMaster;
       if (this.mElectionPolicyMB != null)
-         isElectedNewMaster = this.mElectionPolicyMB.isElectedMaster(this.getPartition());
+         isElectedNewMaster = this.mElectionPolicyMB.isElectedMaster();
       else
          isElectedNewMaster = isDRMMasterReplica();
       
@@ -276,6 +281,33 @@
       startNewMaster();
    }
    
+   @Override
+   protected void setupPartition() throws Exception
+   {
+      super.setupPartition();
+      
+      if (mElectionPolicyMB != null)
+      {
+         if (log.isTraceEnabled())
+         {
+            log.trace("Optional singleton election policy defined: " + mElectionPolicyMB);
+         }
+         
+         mElectionPolicyMB.setHAPartition(getPartition());
+         
+         try
+         {
+            server.invoke(((MBeanProxyInstance)mElectionPolicyMB).getMBeanProxyObjectName(), 
+                  "setSingletonName", new Object[] {getServiceHAName()}, 
+                  new String[] {"java.lang.String"});
+         }
+         catch(ReflectionException re)
+         {
+            log.debug("Selected election policy does not support setting singleton name, skipping assignment.");
+         }         
+      }
+   }
+   
    // Private -------------------------------------------------------
    
    private void sendLocalNotification(String type)




More information about the jboss-cvs-commits mailing list