You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2012/03/02 02:39:25 UTC

svn commit: r1296022 - in /openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery: MultipointDiscoveryAgent.java MultipointServer.java

Author: dblevins
Date: Fri Mar  2 01:39:24 2012
New Revision: 1296022

URL: http://svn.apache.org/viewvc?rev=1296022&view=rev
Log:
OPENEJB-1789: Multipoint.discoveryHost allows for "bind" of 0.0.0.0

Modified:
    openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
    openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java

Modified: openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java?rev=1296022&r1=1296021&r2=1296022&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java (original)
+++ openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointDiscoveryAgent.java Fri Mar  2 01:39:24 2012
@@ -31,6 +31,7 @@ import java.io.InputStream;
 import java.io.OutputStream;
 import java.net.Socket;
 import java.net.URI;
+import java.util.Map;
 import java.util.Properties;
 import java.util.StringTokenizer;
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -55,6 +56,7 @@ public class MultipointDiscoveryAgent im
     private MultipointServer multipointServer;
     private boolean debug = true;
     private String name;
+    private String discoveryHost;
 
     public MultipointDiscoveryAgent() {
     }
@@ -73,6 +75,8 @@ public class MultipointDiscoveryAgent im
         port = options.get("port", port);
         initialServers = options.get("initialServers", initialServers);
         heartRate = options.get("heart_rate", heartRate);
+        discoveryHost = options.get("discoveryHost", host);
+        name = options.get("discoveryName", MultipointServer.randomColor());
 
 
         Tracker.Builder builder = new Tracker.Builder();
@@ -132,7 +136,7 @@ public class MultipointDiscoveryAgent im
         try {
             if (running.compareAndSet(false, true)) {
 
-                multipointServer = new MultipointServer(host, port, tracker, name, debug).start();
+                multipointServer = new MultipointServer(host, discoveryHost, port, tracker, name, debug).start();
 
                 this.port = multipointServer.getPort();
                 

Modified: openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java
URL: http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java?rev=1296022&r1=1296021&r2=1296022&view=diff
==============================================================================
--- openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java (original)
+++ openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/java/org/apache/openejb/server/discovery/MultipointServer.java Fri Mar  2 01:39:24 2012
@@ -56,7 +56,6 @@ public class MultipointServer {
 
     private static final URI END_LIST = URI.create("end:list");
 
-    private final String host;
     private final int port;
     private final Selector selector;
     private final URI me;
@@ -86,26 +85,35 @@ public class MultipointServer {
     }
 
     public MultipointServer(String host, int port, Tracker tracker, String name, boolean debug) throws IOException {
+        this(host, host, port, tracker, name, debug);
+    }
+
+    public MultipointServer(String bindHost, String broadcastHost, int port, Tracker tracker, String name, boolean debug) throws IOException {
         if (tracker == null) throw new NullPointerException("tracker cannot be null");
-        this.host = host;
         this.tracker = tracker;
         this.name = name;
         this.debug = debug;
+        String format = String.format("MultipointServer(bindHost=%s, discoveryHost=%s, port=%s, name=%s, debug=%s)", bindHost, broadcastHost, port, name, debug);
+        log.info(format);
         ServerSocketChannel serverChannel = ServerSocketChannel.open();
 
         ServerSocket serverSocket = serverChannel.socket();
-        InetSocketAddress address = new InetSocketAddress(host, port);
+        InetSocketAddress address = new InetSocketAddress(bindHost, port);
         serverSocket.bind(address);
         serverChannel.configureBlocking(false);
 
         this.port = serverSocket.getLocalPort();
-        me = URI.create("conn://" + this.host + ":" + this.port);
+        if (name != null) {
+            me = URI.create("conn://" + broadcastHost + ":" + this.port + "/" + name);
+        } else {
+            me = URI.create("conn://" + broadcastHost + ":" + this.port);
+        }
 
         selector = Selector.open();
 
         serverChannel.register(selector, SelectionKey.OP_ACCEPT);
 
-        println("Listening");
+        println("Broadcasting");
     }
 
     public int getPort() {
@@ -769,12 +777,15 @@ public class MultipointServer {
                 session = sessions[0];
                 duplicate = sessions[1];
 
-                session.info(session + "@" + session.hashCode() + " KEEP");
-                duplicate.info(duplicate + "@" + duplicate.hashCode() + " KILL");
+                session.trace(session + "@" + session.hashCode() + " KEEP");
+                duplicate.trace(duplicate + "@" + duplicate.hashCode() + " KILL");
 
                 duplicate.hangup = true;
             }
 
+            if (session.state == State.GREETING) {
+                session.info(session + "@" + session.hashCode() + " DISCOVERED");
+            }
             connections.put(session.uri, session);
         }
     }
@@ -793,7 +804,7 @@ public class MultipointServer {
                 '}';
     }
 
-    private static String randomColor() {
+    public static String randomColor() {
         String[] colors = {
                 "almond",
                 "amber",