tomcat 中StandardHostValve类的源码分析

tomcat 中StandardHostValve类的源码分析:

1、源码如下:

final class StandardHostValve extends ValveBase {

    private static final Log log = LogFactory.getLog(StandardHostValve.class);

    // Saves a call to getClassLoader() on very request. Under high load these
    // calls took just long enough to appear as a hot spot (although a very
    // minor one) in a profiler.
    private static final ClassLoader MY_CLASSLOADER =
            StandardHostValve.class.getClassLoader();

    static final boolean STRICT_SERVLET_COMPLIANCE;

    static final boolean ACCESS_SESSION;

    static {
        STRICT_SERVLET_COMPLIANCE = Globals.STRICT_SERVLET_COMPLIANCE;

        String accessSession = System.getProperty(
                "org.apache.catalina.core.StandardHostValve.ACCESS_SESSION");
        if (accessSession == null) {
            ACCESS_SESSION = STRICT_SERVLET_COMPLIANCE;
        } else {
            ACCESS_SESSION = Boolean.parseBoolean(accessSession);
        }
    }

    //------------------------------------------------------ Constructor
    public StandardHostValve() {
        super(true);
    }


    // ----------------------------------------------------- Instance Variables

    /**
     * The string manager for this package.
     */
    private static final StringManager sm =
        StringManager.getManager(Constants.Package);


    // --------------------------------------------------------- Public Methods

    /**
     * Select the appropriate child Context to process this request,
     * based on the specified request URI.  If no matching Context can
     * be found, return an appropriate HTTP error.
     *
     * @param request Request to be processed
     * @param response Response to be produced
     *
     * @exception IOException if an input/output error occurred
     * @exception ServletException if a servlet error occurred
     */
    @Override
    public final void invoke(Request request, Response response)
        throws IOException, ServletException {

        // Select the Context to be used for this Request
        Context context = request.getContext();
        if (context == null) {
            return;
        }

        if (request.isAsyncSupported()) {
            request.setAsyncSupported(context.getPipeline().isAsyncSupported());
        }

        boolean asyncAtStart = request.isAsync();

        try {
            context.bind(Globals.IS_SECURITY_ENABLED, MY_CLASSLOADER);

            if (!asyncAtStart && !context.fireRequestInitEvent(request.getRequest())) {
                // Don't fire listeners during async processing (the listener
                // fired for the request that called startAsync()).
                // If a request init listener throws an exception, the request
                // is aborted.
                return;
            }

       
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
有关struts2下载组件的具体介绍我就在此略过了,看此文的同志想必大多是碰到这样让人很是不爽的问题。 下面就将该问题的最终解决办法介绍如下。 问题概要: 在struts2使用result里type="stream"的结果型时,可以实现文件的下载管理,使用时也是比较顺畅,但是当在“下载提示窗口”点击“取消按钮”时,总是报出“java.lang.IllegalStateException”异常,异常内容如下: 2011-1-8 20:34:20 org.apache.catalina.core.StandardWrapperValve invoke 严重: Servlet.service() for servlet default threw exception java.lang.IllegalStateException at org.apache.catalina.connector.ResponseFacade.sendError(ResponseFacade.java:407) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108) at com.opensymphony.module.sitemesh.filter.PageResponseWrapper.sendError(PageResponseWrapper.java:176) at javax.servlet.http.HttpServletResponseWrapper.sendError(HttpServletResponseWrapper.java:108) at org.apache.struts2.dispatcher.Dispatcher.sendError(Dispatcher.java:770) at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:505) at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:395) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:102) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:662) 网络解决办法: (虽然该办法可行,但是本人并不提倡。具体原因在之后解释。) 在网络查询解决办法大多是使用异常处理的办法,其内容如下: <package name="default" extends="struts-default"> <global-results> <result name="client-abort-exception">/ignored.jsp</result> </global-results> </package> <package name="main" extends="struts-default"> <exception-mapping result="client-abort-exception" exception="org.apache.catalina.connector.ClientAbortException"/> <action name="download" class="com.DownloadAction"> <result name="success" type="stream"> <param name="inputName">targetFile</param> <param name="contentDisposition">filename=""</param> <param name="buffersize">4096</param> </result> </action></package> 也就是说,如果抛出了ClientAbortException异常,那就跳转到“ignored.jsp”这个页面,这个页面什么内容都没有。 还有一种办法是在页面进行try..catch,之后什么都不做 异常原因分析: stream对应的是org.apache.struts2.dispatcher.StreamResult,该的处理过程如下: 1。配置其result标签下的各个参数 2。从服务器获取输入流,并同时与客户端建立输出流(服务器与客户端链接通过Socket进行连接) 3。当点击“保存”或“打开”时,开始传输数据。如果点击“取消”,关闭所有的流。 这里要注意的是,但是实际发现Socket并没有断开!并且流也没有关闭!这一点非常重要! 所以在JSP容器通过Response获取输出流之前,前面的流并没有关闭,所以会造成该异常的报出。 本文解决办法: 在前面所说的网络解决办法,使用的是一种躲避的方式解决该问题,也就是置之不理。 这里提供一个办法可以从根本上解决该问题,但是需要下载插件,在附件有下载,这个插件很小,才4KB而已。 《如果附件下载后文件损坏,可以到http://down.51cto.com/data/158982下载资源,不需要下载豆。》 具体做法如下: 1。将附件解压获取struts2-sunspoter-stream-1.0.jar,并复制在/WEB-INF/lib下 2。在原有的struts.xml的基础上进行相应的配置,配置如下例 <package name="default" namespace="/" extends="struts-default"> <!-- 添加如下内容 --> <result-types> <result-type name="streamx" class="com.sunspoter.lib.web.struts2.dispatcher.StreamResultX"/> </result-types> <action name="download" class="com.DownloadAction"> <!-- type改写 --> <result name="success" type="streamx"> <result name="success" type="streamx"> <!-- 下载文件型定义 --> <param name="contentType">text/plain</param> <!-- 下载文件处理方法 --> <param name="contentDisposition"> attachment;filename="${downloadChineseFileName}" </param> <!-- 下载文件输出流定义 --> <param name="inputName">downloadFile</param> </result> </action> </package> 在这种方式下,只需添加一个result-type,将原有的resulttype改为“streamx”,其他一律不变,在这种情况下,点击“取消”的同时也关闭了流,不会再报出该异常。 之后的执行“取消”后的结果如下:(配置了"log4j.properties"才能看到该结果) 21:23:44,676 WARN StreamResult:45 - StreamResultX Warn : socket write error 如果出现该警告说明正确执行,该警告说明,Socket非正常断,但是流确实已经关闭,自此再也不用看到上面出现的讨厌异常结果。 转载至 http://sunspot.blog.51cto.com/372554/474983
说明:10分虽然有点高 但东西值 重点是 我也只想搞点分数下东西 谢谢支持 目录 I 简介 1 概览 1 适合读者 1 servlet容器是如何工作的 1 catalina结构图 1 tomcat的版本4和版本5 2 章节简介 2 第1章 一个简单的Web服务器 3 1.1 The Hypertext Transfer Protocol (HTTP) 3 1.2 HTTP Request 3 1.3 HTTP Response 4 1.4 Socket 4 1.5 ServerSocket 5 1.6 应用举例 5 第2章 一个简单的servlet容器 7 2.1 简述 7 2.2 javax.servlet.Servlet接口 7 2.3 Application 1 7 2.3.1 HttpServer1 8 2.3.2 Request 8 2.3.3 Response 9 2.3.4 StaticResourceProcessor 9 2.3.5 ServletProcessor1 9 2.4 Application 2 9 第3章 连接器(Connector) 11 3.1 概述 11 3.2 StringManager 11 3.3 Application 12 3.3.1 启动 13 3.3.2 connector 13 3.3.3 创建HttpRequest对象 13 3.3.3.1 SocketInputStream 14 3.3.3.2 解析请求行(request line) 14 3.3.3.3 解析请求头(request header) 14 3.3.3.4 解析cookie 15 3.3.3.5 获取参数 16 3.3.3.6 创建HttpResponse对象 16 3.3.3.7 静态资源处理器和servlet处理器 17 第4章 tomcat的默认连接器 18 4.1 简介 18 4.2 HTTP1.1的新特性 18 4.2.1 持久化连接 18 4.2.2 编码 18 4.2.3 状态码100的使用 19 4.3 Connector接口 19 4.4 HttpConnector 20 4.4.1 创建ServerSocket 20 4.4.2 维护HttpProcessor对象池 20 4.4.3 提供Http请求服务 21 4.5 HttpProcessor 21 4.6 request对象 24 4.7 response对象 24 4.8 处理request对象 25 4.8.1 解析连接 28 4.8.2 解析request 28 4.8.3 解析请求头 28 4.9 简单的container程序 30 第5章 container 31 5.1 Container接口 31 5.2 流水线(pipeline)任务 32 5.2.1 Pipeline 34 5.2.2 Valve接口 35 5.2.3 ValveContext接口 35 5.2.4 Contained接口 36 5.3 Wrapper应用程序 36 5.4 Context接口 36 5.5 Wrapper程序实例 36 5.5.1 ex05.pyrmont.core.SimpleLoader 37 5.5.2 ex05.pyrmont.core.SimplePipeline 37 5.5.3 ex05.pyrmont.core.SimpleWrapper 38 5.5.4 ex05.pyrmont.core.SimpleWrapperValve 38 5.5.5 ex05.pyrmont.valves.ClientIPLoggerValve 39 5.5.6 ex05.pyrmont.valves.HeaderLoggerValve 39 5.5.7 ex05.pyrmont.startup.Bootstrap1 39 5.6 Context程序实例 39 5.6.1 ex05.pyrmont.core.SimpleContextValve 40 5.6.2 ex05.pyrmont.core.SimpleContextMapper 41 5.6.3 ex05.pyrmont.core.SimpleContext 42 5.6.4 ex05.pyrmont.startup.Bootstrap2 42 第6章 生命周期(Lifecycle) 43 6.1 概述 43 6.2 Lifecycle接口 43 6.3 LifecycleEvent 44 6.4 LifecycleListener接口 44 6.5 LifecycleSupport 44 6.6 应用程序 45 6.6.1 ex06.pyrmont.core.SimpleContext 45 6.6.2 ex06.pyrmont.core.SimpleContextLifecycleListener 45 6.6.3 ex06.pyrmont.core.SimpleLoader 46 6.6.4 ex06.pyrmont.core.SimplePipeline 46 6.6.5 ex06.pyrmont.core.SimpleWrapper 46 第7章 Logger 47 7.1 概述 47 7.2 Logger 47 7.3 Tomcat's Loggers 47 7.3.1 LoggerBase 48 7.3.2 SystemOutLogger 48 7.3.3 SystemErrLogger 48 7.3.4 FileLogger 49 7.3.4.1 open方法 50 7.3.4.2 close方法 50 7.3.4.3 log方法 51 7.4 应用程序 51 第8章 Loader 52 8.1 概述 52 8.2 java本身的loader 52 8.3 Loader接口 53 8.4 Reloader接口 54 8.5 WebappLoader 54 8.5.1 创建载入器 55 8.5.2 设置repository 55 8.5.3 设置路径 56 8.5.4 设置访问权限 56 8.5.5 开启新线程执行的重新载入 56 8.6 WebappClassLoader 57 8.6.1 缓存 58 8.6.2 载入 59 8.6.3 应用程序 59 第9章 session管理 62 9.1 概述 62 9.2 Sessions 62 9.2.1 Session接口 62 9.2.2 StandardSession 63 9.2.3 StandardSessionFacade 65 9.3 Manager 65 9.3.1 Manager接口 66 9.3.2 ManagerBase 66 9.3.3 StandardManager 67 9.3.4 PersistentManagerBase 68 9.3.4.1 swap out(换出) 69 9.3.4.2 back up(备份) 69 9.3.5 PersistentManager 70 9.3.6 DistributedManager 70 9.4 Stores 71 9.4.1 StoreBase 72 9.4.2 FileStore 73 9.4.3 JDBCStore 73 9.5 应用程序 73 9.5.1 Bootstrap 73 9.5.2 SimpleWrapperValve 74 第10章 安全性 76 10.1 概述 76 10.2 Realm(领域) 76 10.3 GenericPrincipal 77 10.4 LoginConfig 78 10.5 Authenticator 78 10.6 安装Authenticator 79 10.7 应用程序 79 10.7.1 ex10.pyrmont.core.SimpleContextConfig 80 10.7.2 ex10.pyrmont.realm.SimpleRealm 80 10.7.3 ex10.pyrmont.realm.SimpleUserDatabaseRealm 81 10.7.4 ex10.pyrmont.startup.Bootstrap1 81 10.7.5 ex10.pyrmont.startup.Bootstrap2 81 第11章 StandardWrapper 82 11.1 方法调用序列 82 11.2 SingleThreadModel 83 11.3 StandardWrapper 83 11.3.1 生成servlet 84 11.3.2 载入servlet 86 11.3.3 ServletConfig对象 90 11.3.3.1 getServletContext方法 90 11.3.3.2 getServletName方法 91 11.3.3.3 getInitParameter方法 91 11.3.3.4 getInitParameterNames方法 92 11.3.4 container的父子关系 92 11.4 StandardWrapperFacade 93 11.5 StandardWrapperValve 94 11.6 FilterDef 95 11.7 ApplicationFilterConfig 96 11.8 ApplicationFilterChain 96 11.9 应用程序 97 第12章 StandardContext 98 12.1 概述 98 12.2 StandardContext的配置 98 12.2.1 StandardContext的构造函数 98 12.2.2 启动StandardContext 99 12.2.3 invoke方法 99 12.3 StandardContextMapper 100 12.4 对重载的支持 104 12.5 backgroundProcess方法 105 第13章 Host和Engine 107 13.1 概述 107 13.2 Host接口 107 13.3 StandardHost 107 13.4 StandardHostMapper 109 13.5 StandardHostValve 110 13.6 为什么必须要有一个host 111 13.7 应用程序1 111 13.8 Engine接口 112 13.9 StandardEngine 112 13.10 StandardEngineValve 112 13.11 应用程序2 113 第14章 Server与Service 114 14.1 概述 114 14.2 server 114 14.3 StandardServer 114 14.3.1 initialize方法 114 14.3.2 start方法 115 14.3.3 stop方法 115 14.3.4 await方法 116 14.4 Service接口 116 14.5 StandardService 116 14.5.1 connector和container 117 14.5.2 与生命周期有关的方法 118 14.6 应用程序 120 14.6.1 Bootstrap 120 14.6.2 Stopper 121 第15章 Digester 122 15.1 概述 122 15.2 Digester 122 15.2.1 Digester 123 15.2.1.1 创建对象 123 15.2.1.2 设置属性 124 15.2.1.3 调用方法 124 15.2.1.4 创建对象之间的关系 124 15.2.1.5 验证xml文档 125 15.2.2 Digester示例1 125 15.2.3 Digester示例2 125 15.2.4 Rule 126 15.2.5 Digester示例3:使用UsingSet 127 15.3 ContextConfig 127 15.3.1 defaultConfig方法 129 15.3.2 applicationConfig方法 129 15.3.3 创建digester 130 15.4 应用程序 130 第16章 Shutdown Hook 131 16.1 概述 131 16.2 tomcat的shutdown hook 131 第17章 启动tomcat 133 17.1 概述 133 17.2 Catalina 133 17.2.1 start方法 134 17.2.2 stop方法 135 17.2.3 启动Digester 135 17.2.4 关闭Digester 135 17.3 Bootstrap 136 第18章 部署器 137 18.1 概述 137 18.2 部署一个web应用 137 18.2.1 部署一个描述符 140 18.2.2 部署一个war 141 18.2.3 部署一个目录 142 18.2.4 动态部署 143 18.3 Deploy接口 145 18.4 StandardHostDeployer 145 18.4.1 安装一个描述符文件 146 18.4.2 安装一个war文件或目录 147 18.4.3 启动context 148 18.4.4 停止一个context 149 第19章 Manager Servlet 150 19.1 概述 150 19.2 使用Manager应用 150 19.3 ContainerServlet接口 151 19.4 初始化ManagerServlet 152 19.5 列出已经部署的web应用 153 19.6 启动web应用 154 19.7 关闭web应用 155 第20章 基于JMX的管理 156 20.1 jmx简介 156 20.2 jmx api 157 20.2.1 MBeanServer 157 20.2.2 ObjectName 157 20.3 Standard MBeans 158 20.4 Model MBeans 159 20.4.1 MBeanInfo与ModelMBeanInfo 160 20.4.2 ModelMBean实例 161 20.5 Commons Modeler 161 20.5.1 MBean描述符 162 20.5.1.1 mbean 162 20.5.1.2 attribute 163 20.5.1.3 operation 163 20.5.1.4 parameter 163 20.5.2 mbean标签实例 164 20.5.3 自己编写一个model MBean 164 20.5.4 注册 164 20.5.5 ManagedBean 165 20.5.6 BaseModelMBean 165 20.5.7 使用Modeler API 165 20.6 Catalian的MBean 165 20.6.1 ClassNameMBean 165 20.6.2 StandardServerMBean 166 20.6.3 MBeanFactory 167 20.6.4 MBeanUtil 167 20.7 创建Catalian的MBean 168 20.8 应用程序 172
以下的问题是由于java的堆内存已满,需要java运行时加大java的堆内存空间 2019-10-09 18:02:32.858 [http-nio-8239-exec-6] ERROR c.a.b.c.exceptionHandler.CodeBaseExceptionHandler:69 - Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.OutOfMemoryError: Java heap space at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1006) at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:974) at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:877) at javax.servlet.http.HttpServlet.service(HttpServlet.java:661) at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:851) at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:96) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.github.xiaoymin.swaggerbootstrapui.filter.SecurityBasicAuthFilter.doFilter(SecurityBasicAuthFilter.java:80) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.github.xiaoymin.swaggerbootstrapui.filter.ProductionSecurityFilter.doFilter(ProductionSecurityFilter.java:53) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:61) at org.apache.shiro.web.servlet.AdviceFilter.executeChain(AdviceFilter.java:108) at org.apache.shiro.web.servlet.AdviceFilter.doFilterInternal(AdviceFilter.java:137) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.shiro.web.servlet.ProxiedFilterChain.doFilter(ProxiedFilterChain.java:66) at org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449) at org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365) at org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) at org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) at org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:387) at org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362) at org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:93) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.OutOfMemoryError: Java heap space

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寅灯

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值