You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by fh...@apache.org on 2006/03/14 05:12:01 UTC
svn commit: r385728 - in /tomcat/container/tc5.5.x/modules/groupcom:
src/share/org/apache/catalina/tribes/
src/share/org/apache/catalina/tribes/group/
src/share/org/apache/catalina/tribes/mcast/
src/share/org/apache/catalina/tribes/tcp/ src/share/org/a...
Author: fhanik
Date: Mon Mar 13 20:11:59 2006
New Revision: 385728
URL: http://svn.apache.org/viewcvs?rev=385728&view=rev
Log:
Performance optimizations
Modified:
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Channel.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelInterceptor.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/MembershipService.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelInterceptorBase.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/GroupChannel.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractPooledSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/ReplicationTransmitter.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/PooledMultiSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/PooledParallelSender.java
tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/MapDemo.java
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Channel.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Channel.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Channel.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/Channel.java Mon Mar 13 20:11:59 2006
@@ -104,7 +104,7 @@
*
* @return Member
*/
- public Member getLocalMember() ;
+ public Member getLocalMember(boolean incAlive) ;
/**
*
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelInterceptor.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelInterceptor.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelInterceptor.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/ChannelInterceptor.java Mon Mar 13 20:11:59 2006
@@ -60,7 +60,7 @@
*
* @return Member
*/
- public Member getLocalMember() ;
+ public Member getLocalMember(boolean incAliveTime) ;
/**
*
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/MembershipService.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/MembershipService.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/MembershipService.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/MembershipService.java Mon Mar 13 20:11:59 2006
@@ -80,7 +80,7 @@
/**
* Returns the member object that defines this member
*/
- public Member getLocalMember();
+ public Member getLocalMember(boolean incAliveTime);
/**
* Return all members by name
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelCoordinator.java Mon Mar 13 20:11:59 2006
@@ -195,8 +195,8 @@
*
* @return Member
*/
- public Member getLocalMember() {
- return this.getMembershipService().getLocalMember();
+ public Member getLocalMember(boolean incAlive) {
+ return this.getMembershipService().getLocalMember(incAlive);
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelInterceptorBase.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelInterceptorBase.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelInterceptorBase.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/ChannelInterceptorBase.java Mon Mar 13 20:11:59 2006
@@ -119,8 +119,8 @@
*
* @return Member
*/
- public Member getLocalMember() {
- if ( getNext()!=null ) return getNext().getLocalMember();
+ public Member getLocalMember(boolean incAlive) {
+ if ( getNext()!=null ) return getNext().getLocalMember(incAlive);
else return null;
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/GroupChannel.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/GroupChannel.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/GroupChannel.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/group/GroupChannel.java Mon Mar 13 20:11:59 2006
@@ -97,7 +97,7 @@
if ( destination.length == 0 ) return;
int options = 0;
ClusterData data = new ClusterData();//generates a unique Id
- data.setAddress(getLocalMember());
+ data.setAddress(getLocalMember(false));
data.setTimestamp(System.currentTimeMillis());
byte[] b = null;
if ( msg instanceof ByteMessage ){
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/mcast/McastService.java Mon Mar 13 20:11:59 2006
@@ -153,8 +153,8 @@
/**
* Return the local member
*/
- public Member getLocalMember() {
- localMember.setMemberAliveTime(System.currentTimeMillis()-impl.getServiceStartTime());
+ public Member getLocalMember(boolean alive) {
+ if ( alive ) localMember.setMemberAliveTime(System.currentTimeMillis()-impl.getServiceStartTime());
return localMember;
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractPooledSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractPooledSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractPooledSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/AbstractPooledSender.java Mon Mar 13 20:11:59 2006
@@ -31,7 +31,7 @@
*/
public abstract class AbstractPooledSender extends PooledSender implements MultiPointSender{
protected boolean suspect;
- protected boolean useDirectBuffer;
+ protected boolean useDirectBuffer = true;
protected int maxRetryAttempts;
protected boolean autoConnect;
protected int keepAliveCount;
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/PooledSender.java Mon Mar 13 20:11:59 2006
@@ -48,7 +48,7 @@
public abstract DataSender getNewDataSender();
public DataSender getSender() {
- return queue.getSender(0);
+ return queue.getSender(timeout);
}
public void returnSender(DataSender sender) {
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/ReplicationTransmitter.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/ReplicationTransmitter.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/ReplicationTransmitter.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/ReplicationTransmitter.java Mon Mar 13 20:11:59 2006
@@ -110,6 +110,7 @@
* @see org.apache.catalina.tribes.ClusterSender#start()
*/
public void start() throws java.io.IOException {
+ getTransport().connect();
}
/*
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/BioSender.java Mon Mar 13 20:11:59 2006
@@ -22,12 +22,13 @@
import java.net.Socket;
import java.util.Arrays;
-import org.apache.catalina.tribes.ChannelException;
import org.apache.catalina.tribes.io.XByteBuffer;
import org.apache.catalina.tribes.tcp.Constants;
import org.apache.catalina.tribes.tcp.DataSender;
import org.apache.catalina.tribes.tcp.SenderState;
import org.apache.catalina.util.StringManager;
+import java.io.OutputStream;
+import java.io.InputStream;
/**
* Send cluster messages with only one socket. Ack and keep Alive Handling is
@@ -69,6 +70,8 @@
* current sender socket
*/
private Socket socket = null;
+ private OutputStream soOut = null;
+ private InputStream soIn = null;
/**
* is Socket really connected
@@ -375,6 +378,8 @@
socket.setReceiveBufferSize(getRxBufSize());
socket.setSoTimeout( (int) timeout);
connected = true;
+ soOut = socket.getOutputStream();
+ soIn = socket.getInputStream();
this.requestCount = 0;
this.keepAliveConnectTime = System.currentTimeMillis();
if (log.isDebugEnabled())
@@ -402,6 +407,8 @@
} catch (IOException x) {
} finally {
socket = null;
+ soOut = null;
+ soIn = null;
}
}
this.requestCount = 0;
@@ -476,8 +483,8 @@
* @since 5.5.10
*/
protected void writeData(byte[] data) throws IOException {
- socket.getOutputStream().write(data);
- socket.getOutputStream().flush();
+ soOut.write(data);
+ soOut.flush();
if (getWaitForAck()) waitForAck();
}
@@ -493,7 +500,7 @@
boolean ackReceived = false;
ackbuf.clear();
int bytesRead = 0;
- int i = socket.getInputStream().read();
+ int i = soIn.read();
while ((i != -1) && (bytesRead < Constants.ACK_COMMAND.length)) {
bytesRead++;
byte d = (byte)i;
@@ -502,7 +509,7 @@
ackReceived = Arrays.equals(ackbuf.extractDataPackage(true),Constants.ACK_DATA);
break;
}
- i = socket.getInputStream().read();
+ i = soIn.read();
}
if (!ackReceived) {
if (i == -1) throw new IOException(sm.getString("IDataSender.ack.eof",getAddress(), new Integer(socket.getLocalPort())));
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/PooledMultiSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/PooledMultiSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/PooledMultiSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/bio/PooledMultiSender.java Mon Mar 13 20:11:59 2006
@@ -36,9 +36,20 @@
}
public void sendMessage(Member[] destination, ChannelMessage msg) throws ChannelException {
- MultiPointSender sender = (MultiPointSender)getSender();
- sender.sendMessage(destination,msg);
-
+ MultiPointSender sender = null;
+ try {
+ sender = (MultiPointSender)getSender();
+ if (sender == null) {
+ ChannelException cx = new ChannelException("Unable to retrieve a data sender, time out error.");
+ for (int i = 0; i < destination.length; i++) cx.addFaultyMember(destination[i]);
+ throw cx;
+ } else {
+ sender.sendMessage(destination, msg);
+ }
+ sender.keepalive();
+ }finally {
+ if ( sender != null ) returnSender(sender);
+ }
}
/**
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/NioSender.java Mon Mar 13 20:11:59 2006
@@ -110,7 +110,7 @@
else {
//do a health check, we have no way of verify a disconnected
//socket since we don't register for OP_READ on waitForAck=false
- read(key);
+ read(key);//this causes overhead.
return true;
}
} else {
@@ -209,17 +209,17 @@
this.connected = false;
if ( socketChannel != null ) {
Socket socket = socketChannel.socket();
- socket.shutdownOutput();
- socket.shutdownInput();
- socket.close();
- socketChannel.close();
+ //error free close, all the way
+ try {socket.shutdownOutput();}catch ( Exception x){}
+ try {socket.shutdownInput();}catch ( Exception x){}
+ try {socket.close();}catch ( Exception x){}
+ try {socketChannel.close();}catch ( Exception x){}
socket = null;
socketChannel = null;
}
} catch ( Exception x ) {
- log.error("Unable to disconnect. msg="+x.getMessage());
- if ( log.isDebugEnabled() )
- log.debug("Unable to disconnect. msg="+x.getMessage(),x);
+ log.error("Unable to disconnect NioSender. msg="+x.getMessage());
+ if ( log.isDebugEnabled() ) log.debug("Unable to disconnect NioSender. msg="+x.getMessage(),x);
} finally {
reset();
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/ParallelNioSender.java Mon Mar 13 20:11:59 2006
@@ -282,11 +282,11 @@
public boolean keepalive() {
//throw new UnsupportedOperationException("Method ParallelNioSender.checkKeepAlive() not implemented");
boolean result = false;
- Map.Entry[] entries = (Map.Entry[])nioSenders.entrySet().toArray(new Map.Entry[nioSenders.size()]);
- for ( int i=0; i<entries.length; i++ ) {
- NioSender sender = (NioSender)entries[i].getValue();
+ for ( Iterator i = nioSenders.entrySet().iterator(); i.hasNext(); ) {
+ Map.Entry entry = (Map.Entry)i.next();
+ NioSender sender = (NioSender)entry.getValue();
if ( sender.keepalive() ) {
- nioSenders.remove(entries[i].getKey());
+ nioSenders.remove(entry.getKey());
}
}
return result;
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/PooledParallelSender.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/PooledParallelSender.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/PooledParallelSender.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tcp/nio/PooledParallelSender.java Mon Mar 13 20:11:59 2006
@@ -37,11 +37,13 @@
* @version 1.0
*/
public class PooledParallelSender extends AbstractPooledSender implements MultiPointSender {
+ protected boolean connected = false;
public PooledParallelSender() {
super();
}
public void sendMessage(Member[] destination, ChannelMessage message) throws ChannelException {
+ if ( !connected ) throw new ChannelException("Sender not connected.");
ParallelNioSender sender = (ParallelNioSender)getSender();
try {
sender.sendMessage(destination, message);
@@ -63,6 +65,16 @@
} catch ( IOException x ) {
throw new IllegalStateException("Unable to open NIO selector.",x);
}
+ }
+
+ public synchronized void disconnect() {
+ this.connected = false;
+ super.disconnect();
+ }
+
+ public synchronized void connect() throws IOException {
+ this.connected = true;
+ super.connect();
}
public void memberAdded(Member member) {
Modified: tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/src/share/org/apache/catalina/tribes/tipis/LazyReplicatedMap.java Mon Mar 13 20:11:59 2006
@@ -154,7 +154,7 @@
try {
//send out a map membership message, only wait for the first reply
MapMessage msg = new MapMessage(this.mapContextName,MapMessage.MSG_START,
- false,null,null,null,channel.getLocalMember());
+ false,null,null,null,channel.getLocalMember(false));
Response[] resp = rpcChannel.send(channel.getMembers(),msg,rpcChannel.FIRST_REPLY,timeout);
for ( int i=0; i<resp.length; i++ ) {
messageReceived(resp[i].getMessage(),resp[i].getSource());
@@ -175,7 +175,7 @@
try {
//send a map membership stop message
MapMessage msg = new MapMessage(this.mapContextName,MapMessage.MSG_STOP,
- false,null,null,null,channel.getLocalMember());
+ false,null,null,null,channel.getLocalMember(false));
if ( channel!=null) channel.send(channel.getMembers(),msg);
}catch ( ChannelException x ) {
log.warn("Unable to send stop message.",x);
@@ -304,7 +304,7 @@
//map start request
if ( mapmsg.getMsgType() == mapmsg.MSG_START ) {
mapMemberAdded(sender);
- mapmsg.setBackUpNode(channel.getLocalMember());
+ mapmsg.setBackUpNode(channel.getLocalMember(false));
return mapmsg;
}
Modified: tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/MapDemo.java
URL: http://svn.apache.org/viewcvs/tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/MapDemo.java?rev=385728&r1=385727&r2=385728&view=diff
==============================================================================
--- tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/MapDemo.java (original)
+++ tomcat/container/tc5.5.x/modules/groupcom/test/org/apache/catalina/tribes/demos/MapDemo.java Mon Mar 13 20:11:59 2006
@@ -45,7 +45,7 @@
public MapDemo(Channel channel ) {
map = new LazyReplicatedMap(channel,5000, "MapDemo");
- table = SimpleTableDemo.createAndShowGUI(map,channel.getLocalMember().getName());
+ table = SimpleTableDemo.createAndShowGUI(map,channel.getLocalMember(false).getName());
channel.addChannelListener(this);
channel.addMembershipListener(this);
}
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org