Hi, I'm trying to write a client that can utilize a set number of connections
using MINA trunk (mina-core-2.0.0-M1-20071221.061156-110.jar).
I'm using the netcat
(http://svn.apache.org/viewvc/mina/trunk/example/src/main/java/org/apache/mina/example/netcat/Main.java?view=markup)
as an example but I think I'm doing it wrong. I've never used NIO before so
this is all a bit confusing to me.

What's the preferred way of managing a lot of nio client connections using
MINA? At the moment I'm just creating a lot of NioSocketConnector objects,
and connecting them. I have added an IoFutureListener to the ConnectFuture
obtained by calling nioSocketConnector.connect(InetSocketAddress):
        public void operationComplete(IoFuture arg0) {
                if(arg0 instanceof ConnectFuture) {
                        ConnectFuture cf = (ConnectFuture)arg0;
                        
debug("connected="+cf.isConnected()+",exc="+cf.getException());
                        if(cf.isConnected()) {
                                /**
                                 * Add the connected client to the clients 
queue for processing
                                 */
                                boolean offered =
clients.offer((TyrClient)cf.getSession().getAttribute("CLIENT"));
                                if(!offered)
                                        throw new RuntimeException("Couldn't 
offer connected client.");
                        } else {
                                /**
                                 * Add a new connection attempt to the 
connection queue.
                                 */
                                boolean offered = 
pending.offer(createNewConnection(TIMEOUT));
                                if(!offered)
                                        throw new RuntimeException("Couldn't 
offer connection.");
                        }
                }
    }

And I'm getting a lot of this:
[T:NioSocketConnector-75] connected=false,exc=java.net.ConnectException:
Connection refused
[T:NioSocketConnector-76] connected=false,exc=java.net.ConnectException:
Connection refused
[T:NioSocketConnector-77] connected=false,exc=java.net.ConnectException:
Connection refused
(Which is being expected since I'm just connecting to a closed port)
and then, 
7693 [NioSocketConnector-77] WARN
org.apache.mina.common.DefaultExceptionMonitor - Unexpected exception.
org.apache.mina.common.RuntimeIoException: Failed to initialize.
        at
org.apache.mina.common.AbstractPollingIoConnector.<init>(AbstractPollingIoConnector.java:103)
        at
org.apache.mina.common.AbstractPollingIoConnector.<init>(AbstractPollingIoConnector.java:61)
        at
org.apache.mina.transport.socket.nio.NioSocketConnector.<init>(NioSocketConnector.java:52)
        at tyr.Client.createNewConnection(RickRoller.java:46)
        at tyr.Client.operationComplete(RickRoller.java:154)
        at
org.apache.mina.common.DefaultIoFuture.notifyListener(DefaultIoFuture.java:302)
        at
org.apache.mina.common.DefaultIoFuture.notifyListeners(DefaultIoFuture.java:287)
        at
org.apache.mina.common.DefaultIoFuture.setValue(DefaultIoFuture.java:221)
        at
org.apache.mina.common.DefaultConnectFuture.setException(DefaultConnectFuture.java:95)
        at
org.apache.mina.common.AbstractPollingIoConnector.processSessions(AbstractPollingIoConnector.java:262)
        at
org.apache.mina.common.AbstractPollingIoConnector.access$500(AbstractPollingIoConnector.java:41)
        at
org.apache.mina.common.AbstractPollingIoConnector$Worker.run(AbstractPollingIoConnector.java:298)
        at
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.io.IOException: Too many open files
        at sun.nio.ch.IOUtil.initPipe(Native Method)
        at sun.nio.ch.EPollSelectorImpl.<init>(EPollSelectorImpl.java:49)
        at
sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:18)
        at java.nio.channels.Selector.open(Selector.java:209)
        at
org.apache.mina.transport.socket.nio.NioSocketConnector.init(NioSocketConnector.java:69)
        at
org.apache.mina.common.AbstractPollingIoConnector.<init>(AbstractPollingIoConnector.java:98)
        ... 15 more


So what am I doing wrong?

Thanks,
Alex.
-- 
View this message in context: 
http://www.nabble.com/Using-a-bunch-of-connections-in-a-client--tp14514544s16868p14514544.html
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.

Reply via email to