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.
>
>

Reply via email to