Hi,
I write a simple program to test SocketConnector, I start 10
connector but when 5 has connected, it hangs. Could you tell me why?
PS: I am using mina 1.1.7
Regards
QiHe
The test code is:
package com.qihe.study.util;
import java.net.InetSocketAddress;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import org.apache.mina.common.ConnectFuture;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
import org.apache.mina.common.ThreadModel;
import org.apache.mina.transport.socket.nio.SocketConnector;
import org.apache.mina.transport.socket.nio.SocketConnectorConfig;
public class Test extends IoHandlerAdapter{
private static ThreadPoolExecutor executor = new ThreadPoolExecutor(10,
20,
60L, TimeUnit.SECONDS, new
LinkedBlockingQueue<Runnable>());
public static void main(String[] args) {
Test[] handlers = new Test[10];
for (int i = 0; i < handlers.length; i++) {
handlers[i] = new Test();
}
SocketConnector[] connectors = new SocketConnector[10];
int i = 0;
for (SocketConnector connector : connectors) {
connector = new SocketConnector(2, executor);
SocketConnectorConfig scfg =
connector.getDefaultConfig();
scfg.setConnectTimeout(5);
scfg.setThreadModel(ThreadModel.MANUAL);
ConnectFuture cf = connector.connect(new
InetSocketAddress("localhost", 5222), handlers[i]);
cf.join();
if (cf.isConnected()) {
System.out.print("okokokokokokok");
} else {
System.out.println("ffffffffffffffffff");
}
System.out.println("\n i = " + i);
i++;
}
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
System.out.println("exceptionCaught");
}
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println("sessionCreated");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("sessionOpened");
}
}