在tomcat环境中记录线程异常

时间:2017-07-19 03:26:07

标签: java multithreading tomcat exception spring-boot

我为springboot控制器编写了一段java代码:

@GetMapping("/exception")
    public void exceptionInThread() {
        Thread newThread = new Thread(new Runnable() {
                @Override
                public void run() {
                    throw new NullPointerException();
                }
        });
        log.info("daemon: {}, threadGroup: {}, defaultUncaught: {}",
                 newThread.isDaemon(),
                 newThread.getThreadGroup(),
                 Thread.getDefaultUncaughtExceptionHandler()
                 );
        newThread.start();
    }

编译项目后,我运行java -jar application.jar并调用restapi(http://localhost:8080/exception)。我可以获得NPE跟踪。

但是在我们的生产环境中,我们将sprintboot编译为WAR并将WAR放入Tomcat的webapps目录中。然后发生了奇怪的事情。当我触发restapi来运行该方法时,没有弹出任何NPE跟踪。好像在其下面设置了默认的未捕获异常处理程序,它在没有跟踪的情况下使用异常。但是我打印的应用程序日志在两种环境中都是相同的(sprintboot application& tomcat webapp):

2017-07-19 10:35:33.479  INFO 38070 --- [nio-8080-exec-1] com.ruan.restful.ThreadController  : daemon: true, threadGroup: java.lang.ThreadGroup[name=main,maxpri=10], defaultUncaught: null

这让我很困惑。 Tomcat为我设置了什么?你们能给我一些指示吗?

0 个答案:

没有答案