Kelly Wiles wrote:
Java version 1.6.0_13-b03
Windows XP Pro 2002 SP 3
Would be easiest if I could send a zip file.
The zip file will contain source code, thread dump, client jar file
and server jar file and misc jars to run code.
Unzip into a new folder.
To run the server prototiger_srv-1.0.0.jar on one computer
java -Djava.library.path=. -jar prototiger_srv-1.0.0.jar 2000
And on another computer execute
java -Djava.library.path=. -jar prototiger_clt-1.0.0.jar <ip address
of server> 2000
The zip file can be downloaded at
http://www.tabbyinstall.com/example-20090606.zip
Kelly
Ok, got it. What you are trying to do is to close the session when you
receive a specific message (PtServer_3). That's fine except that if you
close the session which is processing the disconnecting packet, then the
client will close the session, leaving the NioConnector alive, and doing
nothing. This is why it seems to wait forever.
What really happens is that the session is closed when the timeout has
expired (3 seconds).
The only way to close correctly the client is to register a listener in
the closeFuture :
David Rosenstrauch has sent a mail where he explains the way to do that :
public class ShutdownCommand extends TextProtocolCommand {
...
public ProtocolResponse execute() throws Exception {
...
CloseFuture closeFuture = getSession().close(closeImmediately);
closeFuture.addListener(new CloseSessionListener());
return null;
}
...
class CloseSessionListener implements IoFutureListener<CloseFuture>
{
public void operationComplete(CloseFuture future) {
getServerControl().shutDown();
}
}
}
public class CacheServer implements CacheServerControl {
...
public void shutdown() {
logger.debug("{} protocol processor shutting down server
socket", protocolType);
protocolAcceptor.unbind();
protocolAcceptor.dispose();
}
private String protocolType;
private SocketAcceptor protocolAcceptor;
private Logger logger;
}
Hope it helps.
--
--
cordialement, regards,
Emmanuel Lécharny
www.iktek.com
directory.apache.org