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.