On Dec 27, 2007 7:43 PM, stork <[EMAIL PROTECTED]> wrote: > > I'm not sure I understand - how can a SocketConnector create more than one > connection?
I meant: when you need to create more than one connection, you could/should reuse one connector instance. IoConnector connector = ...; ConnectFuture future = connector.connect(...); future.join(); // Wait until the connection attempt is finished. IoSession session = future.getSession(); session.write(...); Maarten > That would explain why the connections aren't getting close properly. > > > Maarten Bosteels wrote: > > > > Hello Alex, > > > > 1) you can use one SocketConnector to create many connections > > > > 2) search the forum for "Too many open files" > > This thread might interest you: > > http://www.nabble.com/Too-many-open-files-to7521146s16868.html > > > > HTH > > Maarten > > > > On Dec 27, 2007 4:43 PM, stork <[EMAIL PROTECTED]> wrote: > >> > >> 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. > >> > >> > > > > > > -- > View this message in context: > http://www.nabble.com/Using-a-bunch-of-connections-in-a-client--tp14514544s16868p14516950.html > > Sent from the Apache MINA Support Forum mailing list archive at Nabble.com. > >
