Hi,
I can insert the class into the filter chain:
cfg.getFilterChain().addLast( "connection limit", new ConnLimitFilter() );
But how do I adjust the maximum allowed? 
Thanks

Kelvin


Michael Bauroth wrote:
> 
> Hi,
> 
> please see the attached filter I wrote for my own purposes. You can add 
> it to your filter chain and adjust the maximum allowed connections over 
> the method 'setMaxConnection( int pMaxConnections )'
> 
> Regards
> Michael
> 
> 
> import org.apache.mina.common.IoFilterAdapter;
> import org.apache.mina.common.IoSession;
> import org.apache.mina.util.SessionLog;
> 
> /**
>   * A [EMAIL PROTECTED] IoFilter} which limits the maximum simultaneous 
> permitted
>   * opened connections.
>   */
> public class ConnectionLimitFilter extends IoFilterAdapter {
> 
>    /**
>     * Defines the maximum simultaneous permitted opened connections.
>     * A value less then zero turns the filtering off.
>     * A value equal to zero blocks every new connection.
>     */
>     private int mMaxConnections = -1;
>     private int mOpenConnections = 0;
> 
>    /**
>     * Set the maximum of simultaneous permitted opened connections.
>     *
>     * NOTE: Values less then zero turn the filter off. A value of 0
>     * blocks all new incoming connections.
>     *
>     * @param the maximum of simultaneous permitted opened connections
>     */
>     public synchronized void setMaxConnections( int pMaxConnections )
>     {
>        mMaxConnections = pMaxConnections;
>     }
> 
>     public void sessionCreated( NextFilter pFilter, IoSession pSession )
>     {
>        mOpenConnections++;
>        if( !blockConnection() )
>        {
>           pFilter.sessionCreated( pSession );
>        }
>        else
>        {
>           closeSession( pSession );
>        }
>     }
> 
>     public void sessionClosed( NextFilter pFilter, IoSession pSession )
>     throws Exception
>     {
>        mOpenConnections--;
>        pFilter.sessionClosed( pSession );
>     }
> 
>    /**
>     * Closes the specified session.
>     *
>     * NOTE: Override this method to specify your own handling for closing
>     * discarded sessions (e.g. advanced logging, personalized messages to
>     * the remote client).
>     *
>     * @param the session to be closed
>     */
>     protected void closeSession( IoSession pSession )
>     {
>        pSession.write( "Session maximum exceeded. Please try again 
> later." );
>        pSession.close();
>     }
> 
>    /**
>     * Returns if the maximum of simultaneous permitted opened connections
>     * is reached and the new connection sould be blocked.
>     *
>     * NOTE: Override this method to achieve a more sophisticated blocking
>     * behaviour, e.g. depending on applications time response.
>     *
>     * @return <tt>true</tt> if maximum reached, otherwise <tt>false</tt>
>     */
>     protected boolean blockConnection()
>     {
>        return (mMaxConnections >= 0 && mOpenConnections >
> mMaxConnections);
>     }
> }
> 
> 
> 
> 

-- 
View this message in context: 
http://www.nabble.com/how-to-configure-maximum-no.-of-client-connections-tf2696920s16868.html#a12462417
Sent from the Apache MINA Support Forum mailing list archive at Nabble.com.

Reply via email to