Spring Boot Exception (вход с / ошибка контроллера) - PullRequest
0 голосов
/ 10 апреля 2020

Я получаю это исключение. Может кто-нибудь выяснить, что является причиной этого?

 at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982)
 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 com.shiksha.util.filters.PerformanceFilter.doFilter(PerformanceFilter.java:53)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at com.shiksha.util.filters.HttpRequestFilter.doFilter(HttpRequestFilter.java:68)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
 at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:158)
 at 

  ...

 at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
 at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.NullPointerException

Мой / ошибка контроллера

@RestController
public class IndexController implements ErrorController {

    private static final String PATH = "/error";
    private static final Logger logger = LoggerFactory.getLogger(IndexController.class);

    @RequestMapping(value="/*")
    public ResponseEntity<?> notFound(HttpServletRequest request) {

        Integer statusCode = null;
        Exception exception = null;
        try {
            statusCode = (Integer) request.getAttribute("javax.servlet.error.status_code");
            exception = (Exception) request.getAttribute("javax.servlet.error.exception");
        }catch(Exception e) {
            logger.error("Exception Case 1 from Index Controller");
        }


        ValidationErrorResponse validationResponse = new ValidationErrorResponse();
        validationResponse.setField("url");
        validationResponse.setMessage("Url Not Found.");
        HttpStatus finalStatus = HttpStatus.NOT_FOUND;
        if(statusCode != null) {
            if(statusCode == 404) {
                validationResponse.setMessage("Url Not Found.");
            }else {
                validationResponse.setMessage("Some error occured");
            }
            finalStatus = HttpStatus.valueOf(statusCode);
            if(exception != null) {
                try {
                    String exceptionMessage = StringUtils.isNotBlank(exception.getMessage())?exception.getMessage():"Exception : Logged from Index Controller";
                    LogException.logException(exceptionMessage, exception);
                } catch(Exception e) {
                    logger.error("Exception Case 2 from Index Controller");
                }

            }
        }

        validationResponse.setField("url");
        return new ResponseEntity<>(validationResponse, finalStatus);
    }

    @Override
    public String getErrorPath() {
        // TODO Auto-generated method stub
        return PATH;
    }
}

Что происходит, если мой проект также имеет @ExceptionHandler, но после того, как я запускаю службу на Prod , через некоторое время исключения перестают переходить к @ExceptionHandler. Вместо этого они приходят в ErrorController, что не должно происходить, так как я уже поймал исключение. Исключением обычно является NullPointer, который я уже уловил в @ ExceptionHandler.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...