You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by az...@apache.org on 2008/10/07 13:47:32 UTC

svn commit: r702441 - in /webservices/axis2/trunk/java/modules: clustering/src/org/apache/axis2/clustering/tribes/ kernel/conf/ kernel/src/org/apache/axis2/clustering/

Author: azeez
Date: Tue Oct  7 04:47:31 2008
New Revision: 702441

URL: http://svn.apache.org/viewvc?rev=702441&view=rev
Log:
Setting isActive property on Members


Modified:
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/Axis2Coordinator.java
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesMembershipListener.java
    webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java
    webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java
    webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/Axis2Coordinator.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/Axis2Coordinator.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/Axis2Coordinator.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/Axis2Coordinator.java Tue Oct  7 04:47:31 2008
@@ -21,6 +21,7 @@
  *  The non-blocking coordinator interceptor 
  */
 public class Axis2Coordinator extends NonBlockingCoordinator {
+
     public void fireInterceptorEvent(InterceptorEvent event) {
         int type = event.getEventType();
         if (type == CoordinationEvent.EVT_CONF_RX && isCoordinator()) {

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/MembershipManager.java Tue Oct  7 04:47:31 2008
@@ -34,11 +34,8 @@
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
-import java.util.Properties;
 import java.util.Random;
 
 /**
@@ -150,7 +147,7 @@
         if (loadBalanceEventHandler != null) {
             log.info("Application member " + TribesUtil.getName(member) + " joined group " +
                      new String(member.getDomain()));
-            loadBalanceEventHandler.applicationMemberAdded(toAxis2Member(member));
+            loadBalanceEventHandler.applicationMemberAdded(TribesUtil.toAxis2Member(member));
         }
 
         if (shouldAddMember) {
@@ -259,7 +256,7 @@
         }
     }
 
-    private org.apache.axis2.clustering.Member toAxis2Member(Member member) {
+    /*private org.apache.axis2.clustering.Member toAxis2Member(Member member) {
         org.apache.axis2.clustering.Member axis2Member =
                 new org.apache.axis2.clustering.Member(TribesUtil.getHost(member),
                                                        member.getPort());
@@ -275,6 +272,10 @@
             axis2Member.setHttpsPort(Integer.parseInt(https));
         }
 
+        String isActive = props.getProperty("IS_ACTIVE");
+        if(isActive != null && isActive.trim().length() != 0){
+            axis2Member.setActive(Boolean.valueOf(isActive));
+        }
         return axis2Member;
     }
 
@@ -288,7 +289,7 @@
             // This error will never occur
         }
         return props;
-    }
+    }*/
 
     private boolean isLocalMemberInitialized() {
         if (configContext == null) {
@@ -309,7 +310,7 @@
 
         // Is this an application domain member?
         if (loadBalanceEventHandler != null) {
-            loadBalanceEventHandler.applicationMemberRemoved(toAxis2Member(member));
+            loadBalanceEventHandler.applicationMemberRemoved(TribesUtil.toAxis2Member(member));
         }
     }
 

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesClusterManager.java Tue Oct  7 04:47:31 2008
@@ -162,7 +162,7 @@
         setMaximumRetries();
         configureMode(domain);
         configureMembershipScheme(domain, mode.getMembershipManagers());
-        setMemberTransportInfo();
+        setMemberInfo();
 
         TribesMembershipListener membershipListener = new TribesMembershipListener(primaryMembershipManager);
         channel.addMembershipListener(membershipListener);
@@ -206,26 +206,32 @@
         log.info("Cluster initialization completed.");
     }
 
-    private void setMemberTransportInfo() throws ClusteringFault {
-        Properties transportInfo = new Properties();
+    private void setMemberInfo() throws ClusteringFault {
+        Properties memberInfo = new Properties();
         AxisConfiguration axisConfig = configurationContext.getAxisConfiguration();
         TransportInDescription httpTransport = axisConfig.getTransportIn("http");
         if (httpTransport != null) {
             Parameter port = httpTransport.getParameter("port");
             if (port != null) {
-                transportInfo.put("HTTP", port.getValue());
+                memberInfo.put("HTTP", port.getValue());
             }
         }
         TransportInDescription httpsTransport = axisConfig.getTransportIn("https");
         if (httpsTransport != null) {
             Parameter port = httpsTransport.getParameter("port");
             if (port != null) {
-                transportInfo.put("HTTPS", port.getValue());
+                memberInfo.put("HTTPS", port.getValue());
             }
         }
+        Parameter isActiveParam = getParameter(ClusteringConstants.Parameters.IS_ACTIVE);
+        if(isActiveParam != null){
+            System.out.println("##### isActive=" + isActiveParam.getValue());
+            memberInfo.setProperty(ClusteringConstants.Parameters.IS_ACTIVE,
+                                   (String)isActiveParam.getValue());
+        }
         ByteArrayOutputStream bout = new ByteArrayOutputStream();
         try {
-            transportInfo.store(bout, "");
+            memberInfo.store(bout, "");
         } catch (IOException e) {
             String msg = "Cannot store member transport properties in the ByteArrayOutputStream";
             log.error(msg, e);

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesMembershipListener.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesMembershipListener.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesMembershipListener.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesMembershipListener.java Tue Oct  7 04:47:31 2008
@@ -39,14 +39,18 @@
     public void memberAdded(Member member) {
         if (membershipManager.memberAdded(member)) {
             log.info("New member " + TribesUtil.getName(member) + " joined cluster.");
+            if (TribesUtil.toAxis2Member(member).isActive()) {
+            } else {
+            }
         }
         //        System.err.println("++++++ IS COORD="+TribesClusterManager.nbc.isCoordinator());
     }
 
     public void memberDisappeared(Member member) {
         log.info("Member " + TribesUtil.getName(member) + " left cluster");
-        membershipManager.memberDisappeared(member);
-
+        if (TribesUtil.toAxis2Member(member).isActive()) {
+        } else {
+        }
 //        System.err.println("++++++ IS COORD="+TribesClusterManager.nbc.isCoordinator());
     }
 }

Modified: webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java (original)
+++ webservices/axis2/trunk/java/modules/clustering/src/org/apache/axis2/clustering/tribes/TribesUtil.java Tue Oct  7 04:47:31 2008
@@ -24,6 +24,11 @@
 import org.apache.catalina.tribes.util.Arrays;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.axis2.clustering.ClusteringConstants;
+
+import java.util.Properties;
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
 
 public class TribesUtil {
 
@@ -45,7 +50,7 @@
     }
 
     public static String getName(Member member) {
-        return getHost(member) + ":" + member.getPort() + "(" + new String(member.getDomain())+ ")";
+        return getHost(member) + ":" + member.getPort() + "(" + new String(member.getDomain()) + ")";
     }
 
     public static String getHost(Member member) {
@@ -68,18 +73,53 @@
     }
 
     public static byte[] getRpcMembershipChannelId(byte[] domain) {
-       return (new String(domain) + ":" + TribesConstants.RPC_MEMBERSHIP_CHANNEL).getBytes();
+        return (new String(domain) + ":" + TribesConstants.RPC_MEMBERSHIP_CHANNEL).getBytes();
     }
 
     public static byte[] getRpcInitChannelId(byte[] domain) {
         return (new String(domain) + ":" + TribesConstants.RPC_INIT_CHANNEL).getBytes();
     }
 
-    public static boolean isInDomain(Member member, byte[] domain){
+    public static boolean isInDomain(Member member, byte[] domain) {
         return Arrays.equals(domain, member.getDomain());
     }
 
-    public static boolean areInSameDomain(Member member1, Member member2){
+    public static boolean areInSameDomain(Member member1, Member member2) {
         return Arrays.equals(member1.getDomain(), member2.getDomain());
     }
+
+    public static org.apache.axis2.clustering.Member toAxis2Member(Member member) {
+        org.apache.axis2.clustering.Member axis2Member =
+                new org.apache.axis2.clustering.Member(TribesUtil.getHost(member),
+                                                       member.getPort());
+        Properties props = getProperties(member.getPayload());
+
+        String http = props.getProperty("HTTP");
+        if (http != null && http.trim().length() != 0) {
+            axis2Member.setHttpPort(Integer.parseInt(http));
+        }
+
+        String https = props.getProperty("HTTPS");
+        if (https != null && https.trim().length() != 0) {
+            axis2Member.setHttpsPort(Integer.parseInt(https));
+        }
+
+        String isActive = props.getProperty(ClusteringConstants.Parameters.IS_ACTIVE);
+        if (isActive != null && isActive.trim().length() != 0) {
+            axis2Member.setActive(Boolean.valueOf(isActive));
+        }
+        return axis2Member;
+    }
+
+    private static Properties getProperties(byte[] payload) {
+        Properties props = null;
+        try {
+            ByteArrayInputStream bin = new ByteArrayInputStream(payload);
+            props = new Properties();
+            props.load(bin);
+        } catch (IOException ignored) {
+            // This error will never occur
+        }
+        return props;
+    }
 }

Modified: webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml (original)
+++ webservices/axis2/trunk/java/modules/kernel/conf/axis2.xml Tue Oct  7 04:47:31 2008
@@ -266,6 +266,12 @@
         <parameter name="AvoidInitiation">true</parameter>
 
         <!--
+           Indicates whether this member is active or not. This will be useful in a setup where
+           members are deployed in ACTIVE and/or PASSIVE configuration 
+        -->
+        <parameter name="isActive">true</parameter>
+
+        <!--
            The membership scheme used in this setup. The only values supported at the moment are
            "multicast" and "wka"
 

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/ClusteringConstants.java Tue Oct  7 04:47:31 2008
@@ -98,6 +98,11 @@
          * the cluster.
          */
         public static final String AVOID_INITIATION = "AvoidInitiation";
+
+        /**
+         * Indicates whether this member is ACTIVE or PASSIVE
+         */
+        public static final String IS_ACTIVE = "isActive";
     }
 
     public static final class MembershipScheme {

Modified: webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java?rev=702441&r1=702440&r2=702441&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java (original)
+++ webservices/axis2/trunk/java/modules/kernel/src/org/apache/axis2/clustering/Member.java Tue Oct  7 04:47:31 2008
@@ -40,6 +40,11 @@
      */
     private int httpsPort = -1;
 
+    /**
+     * Indicates whether this member is ACTIVE or PASSIVE
+     */
+    private boolean isActive = true;
+
     public Member(String hostName, int port) {
         this.hostName = hostName;
         this.port = port;
@@ -69,6 +74,14 @@
         this.httpPort = httpPort;
     }
 
+    public boolean isActive() {
+        return isActive;
+    }
+
+    public void setActive(boolean active) {
+        isActive = active;
+    }
+
     public boolean equals(Object o) {
         if (this == o) {
             return true;
@@ -94,6 +107,6 @@
 
     public String toString() {
         return "Host:" + hostName + ", Port: " + port +
-               ", HTTP:" + httpPort + ", HTTPS:" + httpsPort;
+               ", HTTP:" + httpPort + ", HTTPS:" + httpsPort +", ACTIVE:" + isActive;
     }
 }