Мне нужна вся трассировка стека в Сервисе 1. Как его получить?
Итак, есть способы получить его, по сути, вы должны реализовать. Вы можете получить соответствующее сообщение об исключении / трассировку в JSON response
из Service 2
.То есть, когда есть какой-либо exception
в Service 2
конце, мы можем настроить ответ для отправки соответствующей информации об исключении.
В этой записи есть 3 ответа объясняющий различные способы достижения, также этот один.Теперь о:
Передается ли трассировка стека даже в службу 1 Spring?
Обычно любые необработанные / во время выполнения exception
броски при обработке web-request
вызываютсервер возвращает HTTP 500
ответ.
Таким образом, ответ является пружиной, не передает трассировку стека в Service 1
, скорее отвечает с ошибкой HTTP 500
и наиболее вероятным сообщениемваш exception
.
Однако любое исключение, которое вы пишете самостоятельно, может быть аннотировано аннотацией @ResponseStatus
(которая поддерживает все коды состояния HTTP, определенные спецификацией HTTP
).
Когда annotated exception
генерируется из метода контроллера и не обрабатывается в другом месте, это автоматически приведет к возвращению соответствующего HTTP response
с указанным кодом состояния и записанным сообщением / трассировкой.Например,
@ResponseStatus(value=HttpStatus.NOT_FOUND, reason="No such Account") // 404
public class AddressNotFoundException extends RuntimeException {
// ...
}
А вот метод контроллера, использующий его:
@RequestMapping(value="/account/{id}", method=GET)
public String showOrder(@PathVariable("id") long id, Model model) {
Account account = accountServices.findAccountById(id);
if (account == null) throw new AddressNotFoundException(id);
model.addAttribute(account);
return "accountDetail";
}
Знакомый ответ HTTP 404
будет возвращен, если URL-адрес, обрабатываемый этим методом, содержит неизвестную учетную записьid.
Надеюсь, это поможет.