Author: dblevins
Date: Wed Aug 1 03:01:37 2012
New Revision: 1367847
URL: http://svn.apache.org/viewvc?rev=1367847&view=rev
Log:
OPENEJB-1881 - Multipoint "broadcast" attribute
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
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
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=1367847&r1=1367846&r2=1367847&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
Wed Aug 1 03:01:37 2012
@@ -70,6 +70,7 @@ public class MultipointDiscoveryAgent im
private String discoveryHost;
private Set<URI> roots;
private Duration reconnectDelay;
+ private Options options;
@Managed
private final Event restarts = new Event();
@@ -84,7 +85,7 @@ public class MultipointDiscoveryAgent im
public void init(Properties props) {
- final Options options = new Options(props);
+ options = new Options(props);
options.setLogger(new OptionsLog(log));
host = props.getProperty("bind", host);
@@ -171,7 +172,8 @@ public class MultipointDiscoveryAgent im
try {
if (running.compareAndSet(false, true)) {
log.info("MultipointDiscoveryAgent Starting");
- multipointServer = new MultipointServer(host, discoveryHost,
port, tracker, name, debug, roots, reconnectDelay).start();
+ final boolean broadcast = options.get("broadcast", true);
+ multipointServer = new MultipointServer(host, discoveryHost,
port, tracker, name, debug, roots, reconnectDelay, broadcast).start();
log.info("MultipointDiscoveryAgent Started");
this.port = multipointServer.getPort();
@@ -306,4 +308,13 @@ public class MultipointDiscoveryAgent im
return multipointServer.getReconnectDelay();
}
+ @Managed
+ public boolean getBroadcast() {
+ return multipointServer.getBroadcast();
+ }
+
+ @Managed
+ public void setBroadcast(boolean broadcast) {
+ multipointServer.setBroadcast(broadcast);
+ }
}
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=1367847&r1=1367846&r2=1367847&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
Wed Aug 1 03:01:37 2012
@@ -100,18 +100,19 @@ public class MultipointServer {
private final Lock lock = new ReentrantLock();
private final Condition started = lock.newCondition();
private final Condition stopped = lock.newCondition();
+ private final AtomicBoolean broadcast = new AtomicBoolean(true);
public MultipointServer(int port, Tracker tracker) throws IOException {
- this("localhost", "localhost", port, tracker, randomColor(), true,
Collections.EMPTY_SET, new Duration(30, TimeUnit.SECONDS));
+ this("localhost", "localhost", port, tracker, randomColor(), true,
Collections.EMPTY_SET, new Duration(30, TimeUnit.SECONDS), true);
}
- public MultipointServer(String bindHost, String broadcastHost, int port,
Tracker tracker, String name, boolean debug, Set<URI> roots, Duration
reconnectDelay) throws IOException {
+ public MultipointServer(String bindHost, String broadcastHost, int port,
Tracker tracker, String name, boolean debug, Set<URI> roots, Duration
reconnectDelay, final boolean broadcast) throws IOException {
if (tracker == null) throw new NullPointerException("tracker cannot be
null");
if (bindHost == null) throw new NullPointerException("host cannot be
null");
if (broadcastHost == null) broadcastHost = bindHost;
if (reconnectDelay == null) reconnectDelay = new Duration(30,
TimeUnit.SECONDS);
-
+ this.broadcast.set(broadcast);
this.tracker = tracker;
this.name = name;
@@ -208,6 +209,15 @@ public class MultipointServer {
return port;
}
+ public boolean getBroadcast() {
+ return broadcast.get();
+ }
+
+ public void setBroadcast(boolean broadcast) {
+ this.broadcast.set(broadcast);
+ }
+
+
/**
* Attempt to connect back to the network if
* - We aren't already connected
@@ -458,12 +468,14 @@ public class MultipointServer {
private void heartbeat() throws IOException {
heartbeats.record();
- final Set<String> strings = tracker.getRegisteredServices();
+ if (broadcast.get()) {
+ final Set<String> strings = tracker.getRegisteredServices();
// for (String string : strings) {
// trace(string);
// }
- write(strings);
- state(SelectionKey.OP_READ | SelectionKey.OP_WRITE,
State.HEARTBEAT);
+ write(strings);
+ state(SelectionKey.OP_READ | SelectionKey.OP_WRITE,
State.HEARTBEAT);
+ }
}
}
Modified:
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
URL:
http://svn.apache.org/viewvc/openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint?rev=1367847&r1=1367846&r2=1367847&view=diff
==============================================================================
---
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
(original)
+++
openejb/branches/openejb-3.1.x/server/openejb-multicast/src/main/resources/META-INF/org.apache.openejb.server.ServerService/multipoint
Wed Aug 1 03:01:37 2012
@@ -8,3 +8,4 @@ group = default
heart_rate = 500
loopback_mode = false
max_missed_heartbeats = 10
+broadcast = true