001    package org.shiftone.jrat.core.spi;
002    
003    
004    import org.shiftone.jrat.core.MethodKey;
005    
006    
007    /**
008     * @author jeff@shiftone.org (Jeff Drost)
009     */
010    public interface MethodHandlerFactory {
011    
012        /**
013         * Method createMethodHandler
014         * <li>this method on a handler will never be called more than once with
015         * the same methodKey (caching need only be done at one layer)</li>
016         * <li>if there is an error, or some reason not to column a handler - this
017         * method should log a message and return null (this allows chain handler to
018         * not log to several silent handlers)</li>
019         */
020        MethodHandler createMethodHandler(MethodKey methodKey) throws Exception;
021    
022    
023        /**
024         * It is recommended that handler factories that require shutdown
025         * notification implement the ShutdownListener interface and call
026         * context.addShutdownListener(this) in their startup method.
027         *
028         * @see org.shiftone.jrat.core.shutdown.ShutdownListener
029         */
030        void startup(RuntimeContext context) throws Exception;
031    }