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.