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.