Null ModelAndView возвращается в DispatcherServlet с именем dispatcherServlet: предполагается, что HandlerAdapter завершил обработку запроса - PullRequest
0 голосов
/ 10 мая 2018

Я понимаю, что этот вопрос задавался несколько раз, но у меня другой вариант использования, поэтому я решил опубликовать его снова.

Мой сценарий - один вызывающий сервис весенней загрузки, другой, использующий restTemplate. Я установил тайм-аут restTemplate для подключения и прочитал.

Вызываемый объект каким-то образом создает следующую ошибку в тот момент, когда он возвращает свой ответ обратно вызывающей стороне, когда выполняется этот оператор return responseEntity:

DispatcherServlet (DispatcherServlet.java:1048) - Null ModelAndView returned to DispatcherServlet with name ‘dispatcherServlet’: assuming HandlerAdapter completed request handling

Проблема здесь в том, что блок исключения вокруг кода restTemplate.postForEntity в вызывающей стороне никогда не выполняется, даже несмотря на то, что у вызывающей стороны произошел тайм-аут чтения. Я просто вижу вышеупомянутую ошибку на консоли и все. Вызывающий никогда не получает никакого ответа, и при этом его логика обработки исключений не вызывает.

PS: я тестирую эти сервисы, используя почтальона

1 Ответ

0 голосов
/ 10 мая 2018

Я проверил эту вещь. Вызываемый объект получает исключение, а возвращаемый объект вызван как исключение нулевого указателя с кодом ответа 404 и подробностями

"Возврат исключения org.springframework.web.client.HttpClientErrorException: 404 null response null"

@RequestMapping("rest")
public @ResponseBody String rest() {
    ResponseEntity<String> response=null;
    try {
        logger.info("Inside rest method");
        RestTemplate rest=new RestTemplate();
        setTimeout(rest,1000);
         response =rest.getForEntity("http://10.168.3.75:9009/telemune/index/call",String.class);
         logger.error("response.getBody(); " +response.getBody());
        return response.getBody();
    }catch(Exception e) {
        return "Return Exception "+e +" response "+response;    
    }
}

@RequestMapping("call")
public ModelAndView call() {
    /*throw new NullPointerException();*/
    logger.info("Inside call method");
    return new ModelAndView("never");
}

Это показывает, что если вызываемый получает исключение, то вызываемый не получает ответ и немедленно сообщает об исключении на контроллере остальных, т.е. HttpClientErrorException: 404, а затем - исключение вызываемого.

Пожалуйста, поправьте меня, если я ошибаюсь.

...