Author: jfclere
Date: Thu Nov 29 09:14:27 2018
New Revision: 1847702

URL: http://svn.apache.org/viewvc?rev=1847702&view=rev
Log:
Add back the getters and setters and arrange the Listener so that it works in 
tomcat9.

Modified:
    tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java
    tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java

Modified: tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java?rev=1847702&r1=1847701&r2=1847702&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java Thu Nov 
29 09:14:27 2018
@@ -59,25 +59,36 @@ public class CollectedInfo {
         Set<ObjectInstance> set = mBeanServer.queryMBeans(objectName, null);
         for (ObjectInstance oi : set) {
             objName = oi.getObjectName();
+            String subtype = objName.getKeyProperty("subType");
+            if (subtype != null && subtype.equals("SocketProperties")) {
+                objName = null;
+                continue;
+            }
             String name = objName.getKeyProperty("name");
+            name = name.replace("\"", "");
 
             /* Name are:
-             * http-8080
-             * jk-10.33.144.3-8009
-             * jk-jfcpc%2F10.33.144.3-8009
+             * ajp-nio-8009
+             * ajp-nio-127.0.0.1-8009
+             * ajp-nio-0:0:0:0:0:0:0:1-8009
+             * ajp-nio-10.36.116.209-8009
              */
             String [] elenames = name.split("-");
             String sport = elenames[elenames.length-1];
             iport = Integer.parseInt(sport);
-            String [] shosts = elenames[1].split("%2F");
-            shost = shosts[0];
+            if (elenames.length == 4)
+                shost = elenames[2];
 
             if (port==0 && host==null)
-                  break; /* Take the first one */
-            if (host==null && iport==port)
-                break; /* Only port done */
-            if (shost.compareTo(host) == 0)
-                break; /* Done port and host are the expected ones */
+                break; /* Done: take the first one */
+            if (iport==port) {
+                if (host == null)
+                    break; /* Done: return the first with the right port */
+                else if (shost != null && shost.compareTo(host) == 0)
+                    break; /* Done port and host are the expected ones */
+            }
+            objName = null;
+            shost = null;
         }
         if (objName == null)
             throw new Exception("Can't find connector for " + host + ":" + 
port);

Modified: 
tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java?rev=1847702&r1=1847701&r2=1847702&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java 
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java Thu 
Nov 29 09:14:27 2018
@@ -18,8 +18,6 @@
 
 package org.apache.catalina.ha.backend;
 
-import org.apache.catalina.ContainerEvent;
-import org.apache.catalina.ContainerListener;
 import org.apache.catalina.Lifecycle;
 import org.apache.catalina.LifecycleEvent;
 import org.apache.catalina.LifecycleListener;
@@ -33,45 +31,135 @@ import org.apache.juli.logging.LogFactor
  * what about the bind(IP. port) only IP makes sense (for the moment).
  * BTW:v  = version :-)
  */
-public class HeartbeatListener implements LifecycleListener, ContainerListener 
{
+public class HeartbeatListener implements LifecycleListener {
 
     private static final Log log = LogFactory.getLog(HeartbeatListener.class);
 
     /* To allow to select the connector */
-    private int port = 0;
-    private String host = null;
+    protected int port = 8009;
+    protected String host = null;
+
+    /**
+     * @return the host corresponding to the connector
+     * we want to proxy.
+     */
+    public String getHost() {
+        return this.host;
+    }
+
+    /**
+     * Set the host corresponding to the connector.
+     *
+     * @param host the hostname or ip string.
+     */
+    public void setHost(String host) {
+        this.host = host;
+    }
+
+    /**
+     * @return the port of the connector we want to proxy.
+     */
+    public int getPort() {
+        return this.port;
+    }
+
+    /**
+     * Set the port corresponding to the connector.
+     *
+     * @param port default 8009 the ajp one.
+     */
+    public void setPort(int port) {
+        this.port = port;
+    }
 
     /* for multicasting stuff */
-    private final String ip = "224.0.1.105"; /* Multicast IP */
-    private final int multiport = 23364;     /* Multicast Port */
-    private final int ttl = 16;
+    protected String ip = "224.0.1.105"; /* Multicast IP */
+    protected int multiport = 23364;     /* Multicast Port */
+    protected int ttl = 16;
 
-    public String getHost() { return host; }
+    /* corresponding setters and getters */
+
+    /**
+     * @return the Multicast IP we are using for Multicast
+     */
     public String getGroup() { return ip; }
+
+    /**
+     * Set the Multicast IP to use for Multicast
+     *
+     * @param group the multi address to use.
+     */
+    public void setGroup(String group) { this.ip = group; }
+
+    /**
+     * @return the Multicast Port we are using for Multicast.
+     */
     public int getMultiport() { return multiport; }
+
+    /**
+     * Set the Port to use for Multicast
+     *
+     * @param port the port to use.
+     */
+    public void setMultiport(int port) { this.multiport=port; }
+
+    /**
+     * @return the TTL for Multicast packets.
+     */
     public int getTtl() { return ttl; }
 
     /**
+     * Set the TTL for Multicast packets.
+     *
+     * @param ttl value for TTL.
+     */
+    public void setTtl(int ttl) { this.ttl=ttl; }
+
+    /**
      * Proxy list, format "address:port,address:port".
      */
-    private final String proxyList = null;
+    protected String proxyList = null;
+
+    /**
+     * @return the list of proxies that send us requests.
+     */
     public String getProxyList() { return proxyList; }
 
     /**
+     * Set the list of Proxies that send is requests, when not empty it toogles
+     * the multi to off. A SetHandler heartbeat must be existing in httpd.conf.
+     * 
+     *
+     * @param proxyList the list of proxy, format "address:port,address:port".
+     */
+    public void setProxyList(String proxyList) { this.proxyList = proxyList; }
+
+    /**
      * URL prefix.
      */
-    private final String proxyURL = "/HeartbeatListener";
+    protected String proxyURL = "/HeartbeatListener";
+
+    /**
+     * @return the URL specified in <Location/> for the SetHandler heartbeat.
+     */
     public String getProxyURL() { return proxyURL; }
 
+    /**
+     * Set the URL of receiver in httpd. That is the location used in
+     * <Location "/HeartbeatListener">
+     *    SetHandler heartbeat
+     * </Location>
+     * All proxies MUST use the same location.
+     *
+     * @param proxyURL a String with the URL starting with /
+     */
+    public void setProxyURLString(String proxyURL) { this.proxyURL = proxyURL; 
}
+
     private CollectedInfo coll = null;
 
     private Sender sender = null;
 
     @Override
-    public void containerEvent(ContainerEvent event) {
-    }
-
-    @Override
     public void lifecycleEvent(LifecycleEvent event) {
 
         if (Lifecycle.PERIODIC_EVENT.equals(event.getType())) {



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to