----- Original Message ----- From: "Filip Hanik" <[EMAIL PROTECTED]> To: "Tomcat Developers List" <[EMAIL PROTECTED]> Sent: Tuesday, January 27, 2004 10:49 AM Subject: Re: [PATCH] Clustering members using UDP sockets instead of multicast ones
> I agree with you. But instead of extending multicast service, I would create > a completely separate membership service. I am about to change how the > configuration file looks and at that point I would be more than happy to > have more than one supported configuration...so give me a couple of weeks. > In the meantime, why don't you just post it to the tomcat-user and who ever > wants it can use it. > > Filip > > > ----- Original Message ----- > From: "David Cassidy" <[EMAIL PROTECTED]> > To: "Tomcat Developers List" <[EMAIL PROTECTED]> > Sent: Tuesday, January 27, 2004 12:22 AM > Subject: RE: [PATCH] Clustering members using UDP sockets instead of > multicast ones > > > > > > Filip, > > > > This is a very useful thing for those of us who have to contend with > firewalls and multiple datacentres. > > If it can't go into the main CVS area can we have a 'standard extentions' > type area where things like > > this can be kept with instructions on how to install ? > > > > Thanks > > > > David > > > > > > > > > > > > "Filip Hanik" > > <[EMAIL PROTECTED] To: "Tomcat > Developers List" <[EMAIL PROTECTED]> > > om> cc: > > Subject: RE: [PATCH] > Clustering members using UDP sockets instead of multicast ones > > 26/01/2004 23:30 > > Please respond to > > "Tomcat > > Developers List" > > > > > > > > > > > > > > thanks for the patch, I am not submitting this to CVS as I don't see that > > much added value. But if others find it useful, this is configurable > anyway, > > so there is nothing hard coded in the current code about the membership. > > hope that is ok. > > Filip > > > > -----Original Message----- > > From: Raul Benito [mailto:[EMAIL PROTECTED] > > Sent: Monday, January 26, 2004 11:25 AM > > To: [EMAIL PROTECTED]; [EMAIL PROTECTED] > > Subject: [PATCH] Clustering members using UDP sockets instead of > > multicast ones > > > > > > Hi, > > I'm testing the tomcat5 cluster in an environment where multicast > > connections are filtered. So in order to test our implementation in a > > cluster tomcat, i created this little UdpService that is heavily based > > in McastService, but the cluster nodes are specified in an attribute as > > comma delimited instead of been discover. It is not intended to be a > > fast, it is only for testing. Perhaps somebody wants for something, and > > keep doing this great work. > > > > Regards, > > > > Index: McastServiceImpl.java > > =================================================================== > > RCS file: > > /home/cvspublic/jakarta-tomcat-catalina/modules/cluster/src/share/or > > g/apache/catalina/cluster/mcast/McastServiceImpl.java,v > > retrieving revision 1.6 > > diff -u -r1.6 McastServiceImpl.java > > --- McastServiceImpl.java 13 Jan 2004 00:07:18 -0000 1.6 > > +++ McastServiceImpl.java 26 Jan 2004 19:14:41 -0000 > > @@ -143,6 +143,11 @@ > > protected long serviceStartTime = System.currentTimeMillis(); > > > > /** > > + * void to do inheritance > > + **/ > > + protected McastServiceImpl() {} > > + > > + /** > > * Create a new mcast service impl > > * @param member - the local member > > * @param sendFrequency - the time (ms) in between pings sent out > > > > > > > > ------------------------------------------------------ > > New file > > jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalin > > a/cluster/mcast/UdpServiceImpl.java > > > > package org.apache.catalina.cluster.mcast; > > > > import java.net.DatagramSocket; > > import java.io.IOException; > > import java.net.InetAddress ; > > import java.net.DatagramPacket; > > import org.apache.catalina.cluster.MembershipListener; > > public class UdpServiceImpl extends McastServiceImpl > > { > > private static org.apache.commons.logging.Log log = > > org.apache.commons.logging.LogFactory.getLog( UdpService.class ); > > > > > > > > /** > > * Socket that we intend to listen to > > */ > > protected DatagramSocket socket; > > > > > > > > /** > > * The multicast address > > */ > > protected InetAddress[] address; > > /** > > * The multicast port > > */ > > protected int[] port; > > > > > > > > /** > > * Create a new mcast service impl > > * @param member - the local member > > * @param sendFrequency - the time (ms) in between pings sent out > > * @param expireTime - the time (ms) for a member to expire > > * @param port - the mcast port > > * @param bind - the bind address (not sure this is used yet) > > * @param mcastAddress - the mcast address > > * @param service - the callback service > > * @throws IOException > > */ > > public UdpServiceImpl( > > long sendFrequency, > > long expireTime, > > int port, > > int[] ports, > > InetAddress bind, > > InetAddress[] mcastAddress, > > MembershipListener service) > > throws IOException { > > System.out.println("HOLA0"); > > > > > > > > if ( bind != null) socket = new DatagramSocket(new > > java.net.InetSocketAddress(bind,port)); > > else socket = new DatagramSocket(port); > > this.member = member; > > address = mcastAddress; > > this.port = ports; > > receivePacket = new DatagramPacket(new byte[1000],1000); > > //receivePacket.setAddress(address); > > receivePacket.setPort(port); > > membership = new McastMembership(member.getName()); > > timeToExpiration = expireTime; > > this.service = service; > > this.sendFrequency = sendFrequency; > > } > > > > > > > > > > > > > > > > /** > > * Send a ping > > * @throws Exception > > */ > > public void send() throws Exception{ > > byte[] data = member.getData(this.serviceStartTime); > > for (int i=0;i<address.length;i++) { > > DatagramPacket p = new DatagramPacket(data,data.length); > > p.setAddress(address[i]); > > p.setPort(port[i]); > > socket.send(p); > > } > > } > > > > > > > > } > > -------------------------------------------------------------------------- > > New file > > jakarta-tomcat-catalina/modules/cluster/src/share/org/apache/catalin > > a/cluster/mcast/UdpService.java > > > > package org.apache.catalina.cluster.mcast; > > > > import org.apache.catalina.cluster.MembershipService; > > import java.util.Properties; > > import org.apache.catalina.cluster.Member; > > import org.apache.catalina.cluster.MembershipListener; > > import java.util.Properties; > > > > public class UdpService extends McastService { > > > > > > > > private static org.apache.commons.logging.Log log = > > org.apache.commons.logging.LogFactory.getLog( UdpService.class ); > > > > > > > > > > > > > > /** > > * Start broadcasting and listening to membership pings > > * @throws java.lang.Exception if a IO error occurs > > */ > > public void start() throws java.lang.Exception { > > if ( impl != null ) return; > > String host = getProperties().getProperty("tcpListenHost"); > > int port = > > Integer.parseInt(getProperties().getProperty("tcpListenPort")); > > String name = "tcp://"+host+":"+port; > > localMember = new McastMember(name,host,port,100); > > java.net.InetAddress bind = null; > > if ( properties.getProperty("mcastBindAddress")!= null ) { > > bind = > > > java.net.InetAddress.getByName(properties.getProperty("mcastBindAddress")); > > } > > > > > > > > String listAdr=properties.getProperty("mcastAddress"); > > String[] addrs=listAdr.split(","); > > java.net.InetAddress[] addr= new > java.net.InetAddress[addrs.length]; > > int[] ports=new int[addrs.length]; > > for (int i=0;i<addrs.length;i++) { > > ports[i]=Integer.parseInt(addrs[i].split(":")[1]); > > > addr[i]=java.net.InetAddress.getByName(addrs[i].split(":")[0]); > > > > > > > > } > > > > > > > > impl = new UdpServiceImpl((McastMember)localMember, > > > > Long.parseLong(properties.getProperty("msgFrequency")), > > > > Long.parseLong(properties.getProperty("memberDropTime")), > > port, > > ports, > > bind, > > addr, > > this); > > > > > > > > impl.start(); > > } > > > > > > > > /** > > * Simple test program > > * @param args > > * @throws Exception > > */ > > public static void main(String args[]) throws Exception { > > System.out.println("Usage McastService hostname tcpport"); > > UdpService service = new UdpService(); > > java.util.Properties p = new java.util.Properties(); > > p.setProperty("mcastPort","5555"); > > > > p.setProperty("mcastAddress","127.0.0.1:4000,127.0.0.1:40001,127.0.0 > > .1:40002"); > > p.setProperty("bindAddress","localhost"); > > p.setProperty("memberDropTime","3000"); > > p.setProperty("msgFrequency","500"); > > p.setProperty("tcpListenPort",args[1]); > > p.setProperty("tcpListenHost",args[0]); > > service.setProperties(p); > > service.start(); > > Thread.currentThread().sleep(60*1000*60); > > } > > } > > ------------------------------------------------------------ > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > > > > > > > > > > -- > > > > This e-mail may contain confidential and/or privileged information. If you > are not the intended recipient (or have received this e-mail in error) > please notify the sender immediately and destroy this e-mail. Any > unauthorized copying, disclosure or distribution of the material in this > e-mail is strictly forbidden. > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]