Spring 4 RestController JSON: características no aceptables según la solicitud “aceptar” encabezados

Estoy utilizando la spring 4.1.1.RELEASE y he incluido: jackson-core-asl 1.9.13 y jackson-mapper-asl 1.9.13 in pom para crear una aplicación simple con un RestController.

Aquí está el repository: https://github.com/robikshrestha/samplespringrest.git

Aquí está la guerra que falla: https://github.com/robikshrestha/samplespringrest/tree/master/failingWar

pom.xml:

  4.0.0 com.mycompany SampleContactApp 1.0-SNAPSHOT war SampleContactApp  ${project.build.directory}/endorsed UTF-8 4.1.1.RELEASE    javax javaee-web-api 7.0 provided   org.springframework spring-core ${spring.version}   org.springframework spring-web ${spring.version}   org.springframework spring-webmvc ${spring.version}   org.codehaus.jackson jackson-mapper-asl 1.9.13   org.codehaus.jackson jackson-core-asl 1.9.13      org.apache.maven.plugins maven-compiler-plugin 3.1  1.7 1.7  ${endorsed.dir}     org.apache.maven.plugins maven-war-plugin 2.3  false    org.apache.maven.plugins maven-dependency-plugin 2.6   validate  copy   ${endorsed.dir} true   javax javaee-endorsed-api 7.0 jar          

Aquí está mi web.xml:

    sample  org.springframework.web.servlet.DispatcherServlet  1   sample /*   

y mi ejemplo-servlet.xml

      

La clase de controlador también es simple. Y la clase Sample tiene getters y setters públicos.

 @RestController @RequestMapping("/") public class SampleController { @RequestMapping("/getSample") public Sample getSample() { Sample s = new Sample(); s.setId(1); s.setName("abc"); return s; } } 

Cuando envío la solicitud a través del navegador, recibo

El recurso identificado por esta solicitud solo puede generar respuestas con características no aceptables de acuerdo con los encabezados “aceptar” de la solicitud.

He intentado enviar una solicitud con otras herramientas REST usando un encabezado como

Aceptar: aplicación / json

e incluso probó $ .getJSON (), $ .ajax () etc., pero el mismo error aún aparece. He intentado todos los otros hilos relacionados en StackOverflow, pero el problema persiste.

El truco con este error es que puede ser muy desagradable. En la situación como con el OP, donde ve el error resultante de una solicitud GET del navegador (con el accept header */* ) y la configuración adecuada (en el caso de OPs una configuración mínima de trabajo predeterminada), la causa es muy probable que excepción al convertir a representación.

Aquí, aunque la solicitud no sugiere la representación (ni parámetro, ni ruta, ni cabecera de aceptación), la respuesta es quejarse de la

recurso identificado por esta solicitud solo es capaz de generar respuestas con características no aceptables de acuerdo con los encabezados de solicitud “aceptar”

Las causas podrían ser:

  • Las dependencias faltantes
  • Error en el bean return (ej. Getters perdidos o similares)

a partir de Spring Framework 4.1 , la versión mínima de jackson debería ser 2.1 (2.3 recomendado) , reemplace sus dependencias de jackson con esta sola

   com.fasterxml.jackson.core jackson-databind 2.1.2  

Una cosa que dificulta la depuración en este caso es que en las versiones de tomcat 7.0.5x, esta dependencia está disponible en libs, a diferencia de algunas versiones anteriores. Entonces su código funciona bien en esa versión de tomcat tal como es

La versión de Spring MVC 3.x todavía debe usar el

   org.codehaus.jackson jackson-mapper-asl 1.9.13