zoukankan      html  css  js  c++  java
  • tomcat服务重启后出现好多Exception,原来竟然是...

    开发组里一小伙排查问题时,奇怪地发现tomcat服务重启后出现了好多异常。然后发wiki记录了一下。

    我用他提供的grep命令查了一下catalina.out文件,的确存在很多包含“Exception”的日志。 再仔细看,发现都是INFO日志。再仔细看,这些语句都是 Mapper *** onto ****,意思是spring-mvc框架把url资源映射到action方法上。

    那么,为什么有的会出现throws **Exception呢?
    嘿嘿,直觉告诉了我答案。我赶紧把代码看,果然如此。

    什么原因呢?很简单,是这些方法上声明了throws **Exception。所以,log里就打印出来了。

    我们都知道利用方法签名来描述一个方法。方法签名通常包含可访问性、返回值、方法名、请求参数(按顺序用逗号分隔罗列各数据类型)这几个要素。看来,还包括声明的异常,即throws子句。

    举个栗子,如下方法的签名是 public void pTest() throws InterruptedException 。

    public void pTest() throws InterruptedException {
        ExecutorService pool = Executors.newFixedThreadPool(20);
        for (int i = 0; i < 100; i++) {
            pool.execute(this::pTest);
        }
        pool.awaitTermination(15, TimeUnit.SECONDS);
    }

    当然,下面方法的签名我们都知道,是 public int add(int, int)。

    public int add(int a, int b) {
        return a + b;
    }

    所以,看到tomcat启动日志里的这些Exception,也就不必惊慌了。下面附上这段tomcat启动的日志。

    信息: Initialization processed in 1278 ms
    十月 25, 2021 11:07:27 下午 org.apache.catalina.core.StandardService startInternal
    信息: Starting service Catalina
    十月 25, 2021 11:07:27 下午 org.apache.catalina.core.StandardEngine startInternal
    信息: Starting Servlet Engine: Apache Tomcat/7.0.90
    ....
    2021-10-25 23:07:52.141 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/settle/saveSettleVoucher],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.yft.controller.SettleController.saveSettleVoucher(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,org.springframework.web.multipart.MultipartFile) throws java.io.IOException
    2021-10-25 23:07:52.141 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/settle/downLoadVoucherImg],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.yft.controller.SettleController.downLoadVoucherImg(java.lang.Long,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException
    2021-10-25 23:07:52.142 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/settle/showDeliver],methods=[GET],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String com.yft.controller.SettleController.showDeliver(org.springframework.ui.ModelMap,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
    2021-10-25 23:07:52.142 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/settle/downFile],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.yft.controller.SettleController.downFile(java.lang.String,java.lang.String,javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException
    2021-10-25 23:07:52.142 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/validSecurityCode],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public int com.yft.controller.CodeController.validSecurityCode(javax.servlet.http.HttpServletRequest,java.lang.String)
    2021-10-25 23:07:52.142 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/securityCode2],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.yft.controller.CodeController.getCode2(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException
    2021-10-25 23:07:52.143 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/securityCode],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public void com.yft.controller.CodeController.getCode(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse) throws java.io.IOException
    2021-10-25 23:07:52.143 [ INFO] [] [localhost-startStop-1] [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping:182]Mapped "{[/invoiceRomote/romoteUpdate],methods=[POST],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.util.Map<java.lang.String, java.lang.Object> com.yft.controller.InvoiceRemoteController.updateInvoice(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse,com.yft.queryVO.InvoiceVO)


    注:网上也有说,在java中,方法签名只包含方法名、请求参数。我觉得不必纠结,能消除我们的疑惑就可以了。

  • 相关阅读:
    pytorch的常用接口、操作、注意事项
    pytorch 中conv1d操作
    NLP基本知识点和模型
    深度学习基础理论知识
    对交叉验证的理解
    阅读深度学习论文的一些技巧
    机器学习和深度学习入门总结
    架构思考-业务快速增长时的容量问题
    系统梳理一下锁
    稳定性五件套-限流的原理和实现
  • 原文地址:https://www.cnblogs.com/buguge/p/15465662.html
Copyright © 2011-2022 走看看