Package org.mortbay.jetty.handler.rewrite

Source Code of org.mortbay.jetty.handler.rewrite.LowThreadsRuleContainer

package org.mortbay.jetty.handler.rewrite;

import java.io.IOException;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.mortbay.jetty.AbstractConnector;
import org.mortbay.jetty.Connector;
import org.mortbay.jetty.Request;
import org.mortbay.jetty.Server;
import org.mortbay.log.Log;
import org.mortbay.thread.ThreadPool;

/**
* {@link RuleContainer} for when the {@link ThreadPool} is low on threads
*
* @author joakime
*/
public class LowThreadsRuleContainer
    extends RuleContainer
{
    private ThreadPool _threadPool;

    private Server _server;

    /* ------------------------------------------------------------------------------- */
    public Server getServer()
    {
        return _server;
    }

    /* ------------------------------------------------------------------------------- */
    public void setServer( Server server )
    {
        _server = server;
    }

    /* ------------------------------------------------------------------------------- */
    public ThreadPool getThreadPool()
    {
        return _threadPool;
    }

    /* ------------------------------------------------------------------------------- */
    private ThreadPool getThreadPool( Request request )
    {
        if ( _threadPool == null )
        {
            // Lazy load the thread pool from the connector.
            Connector connector = request.getConnection().getConnector();
            if ( connector instanceof AbstractConnector )
            {
                _threadPool = ( (AbstractConnector) connector ).getThreadPool();
                return _threadPool;
            }

            if ( _server != null )
            {
                // Next, try to load the thread pool from the server.
                _threadPool = _server.getThreadPool();
                return _threadPool;
            }
        }

        return _threadPool;
    }

    /* ------------------------------------------------------------------------------- */
    public void setThreadPool( ThreadPool pool )
    {
        _threadPool = pool;
    }

    /**
     * Process the contained rules if the threadpool is low on threads
     * @param target target field to pass on to the contained rules
     * @param request request object to pass on to the contained rules
     * @param response response object to pass on to the contained rules
     */
    public String matchAndApply( String target, HttpServletRequest request, HttpServletResponse response )
        throws IOException
    {
        _threadPool = getThreadPool( (Request) request );

        if ( _threadPool == null )
        {
            Log.warn( "ThreadPool not found" );
            return target;
        }

        Log.debug( "Low on threads: ", _threadPool.isLowOnThreads() );
        if ( !_threadPool.isLowOnThreads() )
        {
            return target;
        }

        return apply( target, request, response );
    }
}
TOP

Related Classes of org.mortbay.jetty.handler.rewrite.LowThreadsRuleContainer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.