Korzystam ze sprężynowego szkieletu MVC. Chcę rejestrować statusy błędów za każdym razem, gdy zgłaszany jest wyjątek, więc metoda afterCompletion
jest używana w HanlderInterceptor
.HandlerInterceptor.afterCompletion() na wiosnę MVC zmienia kod odpowiedzi
@Override
public void afterCompletion(final HttpServletRequest request, final HttpServletResponse response, final Object handler, final Exception ex)
{
final int responseCode = response.getStatus();
s_logger_error.error("status code: " + responseCode);
}
Ten kod działa poprawnie, jeśli uruchamiam to jako aplikację na komputerze lokalnym. Ale kiedy hostujemy go na serwerze pomostu, interfejs użytkownika otrzymuje poprawną odpowiedź o błędzie (w moim przypadku 409
), ale w tej metodzie jest rejestrowany jako 200
.
[Obrazek ze zdalnego debugowania gdzie pokazuje status=200
ale w odpowiedzi to 409
]
Czy ktoś mógłby pomóc, aby dowiedzieć się, dlaczego jest zmiana kodu odpowiedzi?
Używam sprintu 1.1.7.RELEASE wiosna wersji boot i jetty-distribution-9.2.10.v20150310.
Gdzie jest kod 409 Stan ustawić? Możliwe, że jest ustawiony po ustawieniu statusu HandlerInterceptor.afterCompletion() – medvedev1088
409 zanim wywołany zostanie HandlerInterceptor.afterCompletion(). – subhashlg26
Czy zaimplementowałeś 'HandlerInterceptor' lub podklasę jednej z implementacji? – Leon