⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 servlethandler.java

📁 是离开的肌肤了卡机是离开的就富利卡及是了的开发及拉考试及的福利科技阿斯利康的肌肤莱卡及时的离开福建阿斯顿发
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                throw (RetryRequest)th;              }            else if (th instanceof HttpException)                throw (HttpException)th;            else if (Log.isDebugEnabled())            {                Log.warn(request.getRequestURI(), th);                 Log.debug(request.toString());             }            else if (th instanceof IOException || th instanceof UnavailableException)            {                Log.warn(request.getRequestURI()+": "+th);            }            else            {                Log.warn(request.getRequestURI(),th);            }                        // TODO httpResponse.getHttpConnection().forceClose();            if (!response.isCommitted())            {                request.setAttribute(ServletHandler.__J_S_ERROR_EXCEPTION_TYPE,th.getClass());                request.setAttribute(ServletHandler.__J_S_ERROR_EXCEPTION,th);                if (th instanceof UnavailableException)                {                    UnavailableException ue = (UnavailableException)th;                    if (ue.isPermanent())                        response.sendError(HttpServletResponse.SC_NOT_FOUND,th.getMessage());                    else                        response.sendError(HttpServletResponse.SC_SERVICE_UNAVAILABLE,th.getMessage());                }                else                    response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,th.getMessage());            }            else                if(Log.isDebugEnabled())Log.debug("Response already committed for handling "+th);        }        catch(Error e)        {               if (type!=REQUEST)                throw e;            Log.warn("Error for "+request.getRequestURI(),e);            if(Log.isDebugEnabled())Log.debug(request.toString());                        // TODO httpResponse.getHttpConnection().forceClose();            if (!response.isCommitted())            {                request.setAttribute(ServletHandler.__J_S_ERROR_EXCEPTION_TYPE,e.getClass());                request.setAttribute(ServletHandler.__J_S_ERROR_EXCEPTION,e);                response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR,e.getMessage());            }            else                if(Log.isDebugEnabled())Log.debug("Response already committed for handling ",e);        }        finally        {            if (request_listeners!=null)            {                for(int i=LazyList.size(request_listeners);i-->0;)                {                    final ServletRequestListener listener = (ServletRequestListener)LazyList.get(request_listeners,i);                    listener.requestDestroyed(request_event);                }            }                        base_request.setServletName(old_servlet_name);            base_request.setRoleMap(old_role_map);            if (type!=INCLUDE)            {                base_request.setServletPath(old_servlet_path);                base_request.setPathInfo(old_path_info);             }        }        return;    }    /* ------------------------------------------------------------ */    private FilterChain getFilterChain(int requestType, String pathInContext, ServletHolder servletHolder)     {        String key=pathInContext==null?servletHolder.getName():pathInContext;                if (_filterChainsCached && _chainCache!=null)        {            synchronized(this)            {                if(_chainCache[requestType].containsKey(key))                    return (FilterChain)_chainCache[requestType].get(key);            }        }                // Build list of filters        Object filters= null;            // Path filters        if (pathInContext!=null && _filterPathMappings!=null)        {            for (int i= 0; i < _filterPathMappings.size(); i++)            {                FilterMapping mapping = (FilterMapping)_filterPathMappings.get(i);                if (mapping.appliesTo(pathInContext, requestType))                    filters= LazyList.add(filters, mapping.getFilterHolder());            }        }        // Servlet name filters        if (servletHolder != null && _filterNameMappings!=null && _filterNameMappings.size() > 0)        {            // Servlet name filters            if (_filterNameMappings.size() > 0)            {                Object o= _filterNameMappings.get(servletHolder.getName());                for (int i=0; i<LazyList.size(o);i++)                {                    FilterMapping mapping = (FilterMapping)LazyList.get(o,i);                    if (mapping.appliesTo(requestType))                        filters=LazyList.add(filters,mapping.getFilterHolder());                }                                o= _filterNameMappings.get("*");                for (int i=0; i<LazyList.size(o);i++)                {                    FilterMapping mapping = (FilterMapping)LazyList.get(o,i);                    if (mapping.appliesTo(requestType))                        filters=LazyList.add(filters,mapping.getFilterHolder());                }            }        }                if (filters==null)            return null;                FilterChain chain = null;        if (_filterChainsCached)        {            if (LazyList.size(filters) > 0)                chain= new CachedChain(filters, servletHolder);            synchronized(this)            {                if (_maxFilterChainsCacheSize>0 && _chainCache[requestType].size()>_maxFilterChainsCacheSize)                    _chainCache[requestType].clear();                _chainCache[requestType].put(key,chain);            }        }        else if (LazyList.size(filters) > 0)            chain = new Chain(filters, servletHolder);            return chain;    }    /* ------------------------------------------------------------ */    /**     * @return Returns the initializeAtStart.     * @deprecated     */    public boolean isInitializeAtStart()    {        return false;    }        /* ------------------------------------------------------------ */    /**     * @param initializeAtStart The initializeAtStart to set.     * @deprecated     */    public void setInitializeAtStart(boolean initializeAtStart)    {    }    /* ------------------------------------------------------------ */    /**     * @return true if the handler is started and there are no unavailable servlets      */    public boolean isAvailable()    {        if (!isStarted())            return false;        ServletHolder[] holders = getServlets();        for (int i=0;i<holders.length;i++)        {            ServletHolder holder = holders[i];            if (holder!=null && !holder.isAvailable())                return false;        }        return true;    }        /* ------------------------------------------------------------ */    /**     * @param start True if this handler will start with unavailable servlets     */    public void setStartWithUnavailable(boolean start)    {        _startWithUnavailable=start;    }        /* ------------------------------------------------------------ */    /**     * @return True if this handler will start with unavailable servlets     */    public boolean isStartWithUnavailable()    {        return _startWithUnavailable;    }                /* ------------------------------------------------------------ */    /** Initialize filters and load-on-startup servlets.     * Called automatically from start if autoInitializeServlet is true.     */    public void initialize()        throws Exception    {        MultiException mx = new MultiException();        // Start filters        if (_filters!=null)        {            for (int i=0;i<_filters.length; i++)                _filters[i].start();        }                if (_servlets!=null)        {            // Sort and Initialize servlets            ServletHolder[] servlets = (ServletHolder[])_servlets.clone();            Arrays.sort(servlets);            for (int i=0; i<servlets.length; i++)            {                try                {                    if (servlets[i].getClassName()==null && servlets[i].getForcedPath()!=null)                    {                        ServletHolder forced_holder = (ServletHolder)_servletPathMap.match(servlets[i].getForcedPath());                        if (forced_holder==null || forced_holder.getClassName()==null)                        {                                mx.add(new IllegalStateException("No forced path servlet for "+servlets[i].getForcedPath()));                            continue;                        }                        servlets[i].setClassName(forced_holder.getClassName());                    }                                        servlets[i].start();                }                catch(Throwable e)                {                    Log.debug(Log.EXCEPTION,e);                    mx.add(e);                }            }             mx.ifExceptionThrow();          }    }        /* ------------------------------------------------------------ */    /**     * @return Returns the filterChainsCached.     */    public boolean isFilterChainsCached()    {        return _filterChainsCached;    }    /* ------------------------------------------------------------ */    /**     * @see also newServletHolder(Class)     */    public ServletHolder newServletHolder()    {        return new ServletHolder();    }        /* ------------------------------------------------------------ */    public ServletHolder newServletHolder(Class servlet)    {        return new ServletHolder(servlet);    }        /* ------------------------------------------------------------ */    /** conveniance method to add a servlet.     * @return The servlet holder.     */    public ServletHolder addServletWithMapping (String className,String pathSpec)    {        ServletHolder holder = newServletHolder(null);        holder.setName(className+"-"+holder.hashCode());        holder.setClassName(className);                addServletWithMapping(holder,pathSpec);                return holder;    }           /* ------------------------------------------------------------ */    /** conveniance method to add a servlet.     * @return The servlet holder.     */    public ServletHolder addServletWithMapping (Class servlet,String pathSpec)    {        ServletHolder holder = newServletHolder(servlet);        setServlets((ServletHolder[])LazyList.addToArray(getServlets(), holder, ServletHolder.class));                addServletWithMapping(holder,pathSpec);                return holder;    }           /* ------------------------------------------------------------ */    /** conveniance method to add a servlet.     * @param name     * @param className     * @param pathSpec     * @return The servlet holder.     */    public void addServletWithMapping (ServletHolder servlet,String pathSpec)    {        ServletHolder[] holders=getServlets();        if (holders!=null)            holders = (ServletHolder[])holders.clone();                try        {            setServlets((ServletHolder[])LazyList.addToArray(holders, servlet, ServletHolder.class));                        ServletMapping mapping = new ServletMapping();            mapping.setServletName(servlet.getName());            mapping.setPathSpec(pathSpec);            setServletMappings((ServletMapping[])LazyList.addToArray(getServletMappings(), mapping, ServletMapping.class));        }        catch (Exception e)        {            setServlets(holders);            if (e instanceof RuntimeException)                throw (RuntimeException)e;            throw new RuntimeException(e);        }    }    /* ------------------------------------------------------------ */    /** Convenience method to add a servlet with a servlet mapping.     * @param className     * @param pathSpec     * @return     * @deprecated     */    public ServletHolder addServlet (String className, String pathSpec)    {        return addServletWithMapping (className, pathSpec);    }        /* ------------------------------------------------------------ */        /**Convenience method to add a pre-constructed ServletHolder.     * @param holder     */    public void addServlet(ServletHolder holder)    {        setServlets((ServletHolder[])LazyList.addToArray(getServlets(), holder, ServletHolder.class));    }        /* ------------------------------------------------------------ */        /** Convenience method to add a pre-constructed ServletMapping.     * @param mapping     */    public void addServletMapping (ServletMapping mapping)    {        setServletMappings((ServletMapping[])LazyList.addToArray(getServletMappings(), mapping, ServletMapping.class));    }        /* ------------------------------------------------------------ */    public FilterHolder newFilterHolder(Class filter)    {        return new FilterHolder(filter);    }        /* ------------------------------------------------------------ */    /**      * @see {@link #newFilterHolder(Class)}     */    public FilterHolder newFilterHolder()    {        return new FilterHolder();    }    /* ------------------------------------------------------------ */    public FilterHolder getFilter(String name)    {        return (FilterHolder)_filterNameMap.get(name);    }        /* ------------------------------------------------------------ */    /** conveniance method to add a filter.     * @param name     * @param className     * @param pathSpec     * @param dispatches see {@link FilterMapping#setDispatches(int)}     * @return The filter holder.     */    public FilterHolder addFilterWithMapping (Class filter,String pathSpec,int dispatches)    {        FilterHolder holder = newFilterHolder(filter);        addFilterWithMapping(holder,pathSpec,dispatches);                return holder;    }        /* ------------------------------------------------------------ */    /** conveniance method to add a filter.     * @param name     * @param className     * @param pathSpec     * @param dispatches see {@link FilterMapping#setDispatches(int)}     * @return The filter holder.     */    public FilterHolder addFilterWithMapping (String className,String pathSpec,int dispatches)    {        FilterHolder holder = newFilterHolder(null);        holder.setName(className+"-"+holder.hashCode());        holder.setClassName(className);                addFilterWithMapping(holder,pathSpec,dispatches);        return holder;    }        /* ------------------------------------------------------------ */    /** conveniance method to add a filter.     * @param name     * @param className     * @param pathSpec     * @param dispatches see {@link FilterMapping#setDispatches(int)}     * @return The filter holder.     */    public void addFilterWithMapping (FilterHolder holder,String pathSpec,int dispatches)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -