spring spring-mvc jetty spring-boot

HandlerInterceptor.afterCompletion() en Spring MVC cambia el código de respuesta



spring-mvc jetty (1)

setStatus asegurarse de llamar setStatus método setStatus en su objeto de response a excepción.

Si afirma esto, la actualización a la versión 1.1.11 de Spring Boot puede solucionar su problema. Se trata de esta fix . Antes de la corrección, el ErrorPageFilter estaba ocultando el estado de respuesta de la respuesta sendError en los casos en que el método sendError no se llama explícitamente en el ErrorWrapperResponse .

El código después de la changed de simple return this.status a

if (this.errorToSend) { return this.status; } else { // If there was no error we need to trust the wrapped response return super.getStatus(); }

Es por eso que creo que la actualización solucionará su problema.

Finalmente, si emite persistencia, la depuración a través de ErrorPageFilter debería indicar el origen del problema

Estoy utilizando Spring MVC Framework. Quiero registrar los estados de error cada vez que se produce una excepción, por afterCompletion método afterCompletion se utiliza en HanlderInterceptor .

@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 ); }

Este código funciona bien si lo ejecuto como una aplicación en una máquina local. Pero cuando lo alojamos en el servidor de Jetty, la interfaz de usuario obtiene una respuesta de error correcta (en mi caso 409 ), pero en este método se registra como 200 .

[Imagen de depuración remota donde muestra status=200 pero en respuesta es 409 ]

¿Puede alguien ayudar a averiguar por qué hay un cambio en el código de respuesta?

Estoy usando la versión Sprint 1.1.7.RELEASE spring boot y jetty-distribution-9.2.10.v20150310.