you're gonna run into all the same issues we already worked through with
tribes. I'm not sure why you don't just use tribes rather than
reinventing everything from scratch
Filip
On 10/09/2009 10:00 AM, jfcl...@apache.org wrote:
Author: jfclere
Date: Fri Oct 9 16:00:20 2009
New Revision: 823603
URL: http://svn.apache.org/viewvc?rev=823603&view=rev
Log:
Add a local bind otherwise for box with multi IP httpd may use the wrong port.
Modified:
tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java
tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java
tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java
tomcat/trunk/java/org/apache/catalina/ha/backend/TcpSender.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=823603&r1=823602&r2=823603&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/CollectedInfo.java Fri Oct
9 16:00:20 2009
@@ -44,11 +44,15 @@
int ready;
int busy;
+ int port = 0;
+ String host = null;
+
public CollectedInfo(String host, int port) throws Exception {
init(host, port);
}
public void init(String host, int port) throws Exception {
- String sport = Integer.toString(port);
+ int iport = 0;
+ String shost = null;
mBeanServer = Registry.getRegistry(null, null).getMBeanServer();
String onStr = "*:type=ThreadPool,*";
ObjectName objectName = new ObjectName(onStr);
@@ -58,24 +62,29 @@
ObjectInstance oi = iterator.next();
objName = oi.getObjectName();
String name = objName.getKeyProperty("name");
+
/* Name are:
* http-8080
* jk-10.33.144.3-8009
* jk-jfcpc%2F10.33.144.3-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 (port==0&& host==null)
break; /* Take the first one */
- String [] elenames = name.split("-");
- if (elenames[elenames.length-1].compareTo(sport) != 0)
- continue; /* port doesn't match */
- if (host==null)
+ if (host==null&& iport==port)
break; /* Only port done */
- String [] shosts = elenames[1].split("%2F");
- if (shosts[0].compareTo(host) == 0)
+ if (shost.compareTo(host) == 0)
break; /* Done port and host are the expected ones */
}
if (objName == null)
- throw(new Exception("Can't find connector for " + host + ":" +
sport));
+ throw(new Exception("Can't find connector for " + host + ":" +
port));
+ this.port = iport;
+ this.host = shost;
}
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=823603&r1=823602&r2=823603&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/HeartbeatListener.java Fri
Oct 9 16:00:20 2009
@@ -85,26 +85,31 @@
sender = new MultiCastSender();
else
sender = new TcpSender();
-
- try {
- sender.init(this);
- } catch (Exception ex) {
- log.error("Unable to initialize Sender: " + ex);
- sender = null;
- return;
- }
}
/* Read busy and ready */
if (coll == null) {
try {
coll = new CollectedInfo(host, port);
+ this.port = coll.port;
+ this.host = coll.host;
} catch (Exception ex) {
log.error("Unable to initialize info collection: " + ex);
coll = null;
return;
}
}
+
+ /* Start or restart sender */
+ try {
+ sender.init(this);
+ } catch (Exception ex) {
+ log.error("Unable to initialize Sender: " + ex);
+ sender = null;
+ return;
+ }
+
+ /* refresh the connector information and send it */
try {
coll.refresh();
} catch (Exception ex) {
Modified: tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java?rev=823603&r1=823602&r2=823603&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java
(original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/MultiCastSender.java Fri
Oct 9 16:00:20 2009
@@ -23,6 +23,7 @@
import java.net.MulticastSocket;
import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.net.DatagramPacket;
import java.io.UnsupportedEncodingException;
@@ -48,7 +49,13 @@
if (s == null) {
try {
group = InetAddress.getByName(config.getGroup());
- s = new MulticastSocket(config.getMultiport());
+ if (config.host != null) {
+ InetAddress addr = InetAddress.getByName(config.host);
+ InetSocketAddress addrs = new InetSocketAddress(addr,
config.getMultiport());
+ s = new MulticastSocket(addrs);
+ } else
+ s = new MulticastSocket(config.getMultiport());
+
s.setTimeToLive(config.getTtl());
s.joinGroup(group);
} catch (Exception ex) {
Modified: tomcat/trunk/java/org/apache/catalina/ha/backend/TcpSender.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/ha/backend/TcpSender.java?rev=823603&r1=823602&r2=823603&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/ha/backend/TcpSender.java (original)
+++ tomcat/trunk/java/org/apache/catalina/ha/backend/TcpSender.java Fri Oct 9
16:00:20 2009
@@ -27,6 +27,7 @@
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
+import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.StringTokenizer;
@@ -90,7 +91,16 @@
for (int i = 0; i< connections.length; i++) {
if (connections[i] == null) {
try {
- connections[i] = new Socket(proxies[i].address,
proxies[i].port);
+ if (config.host != null) {
+ connections[i] = new Socket();
+ InetAddress addr = InetAddress.getByName(config.host);
+ InetSocketAddress addrs = new InetSocketAddress(addr,
0);
+ connections[i].setReuseAddress(true);
+ connections[i].bind(addrs);
+ addrs = new InetSocketAddress(proxies[i].address,
proxies[i].port);
+ connections[i].connect(addrs);
+ } else
+ connections[i] = new Socket(proxies[i].address,
proxies[i].port);
connectionReaders[i] = new BufferedReader(new
InputStreamReader(connections[i].getInputStream()));
connectionWriters[i] = new BufferedWriter(new
OutputStreamWriter(connections[i].getOutputStream()));
} catch (Exception ex) {
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org