whitelabel starter page error spring-boot jersey jersey-2.0 rest-assured

spring-boot - starter - whitelabel error page 404 spring boot



Jersey devuelve 404 con cualquier código de estado de error? (2)

También tuve este problema y lo resolví excluyendo ErrorMvcAutoConfiguration de la configuración automática del arranque de resorte:

@EnableAutoConfiguration(exclude = { ErrorMvcAutoConfiguration.class })

Tengo este punto final inútil en la ruta "/ prueba":

@PUT public Response doSomething() { return Response.status(409).build(); }

y lo pruebo de esta manera:

@Test public void uselessTest() { put("/test").then().assertThat().statusCode(409); }

Pero obtengo un error de aserción:

El código de estado esperado <409> no coincide con el código de estado real <404>.

Esto ocurre en más códigos: 400, 500 ... además de 200.

Estoy usando Spring Boot. Si pongo un punto de interrupción en mi método de punto final cuando ejecuto la prueba, la ejecución se detiene allí, por lo que la solicitud en la prueba se realiza correctamente. Si cambio el código de estado (en recursos y en la prueba, también) a 200, pase la prueba.

¿Que esta pasando?


El comportamiento predeterminado con Jersey, cuando hay un estado de error (4xx, 5xx), es utilizar Response.sendError del servlet, lo que da como resultado un redireccionamiento a una página de error. Como no hay una página de error configurada, da como resultado un 404.

Podemos cambiar este comportamiento estableciendo la propiedad de Jersey

ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR

Puede hacer esto en su subclase ResourceConfig

public JerseyConfig extends ResourceConfig { public JerseyConfig() { property(ServerProperties.RESPONSE_SET_STATUS_OVER_SEND_ERROR, true); } }

O bien (con Spring Boot) puede agregarlo en su archivo application.properties .

spring.jersey.init.jersey.config.server.response.setStatusOverSendError=true