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");
        }       
}

Reply via email to