Missing MessageBodyWriter nach Guice-Anbindung

jemand

Mitglied
Hallo 🙂,

ich habe hier eine Methode, um eine Person via REST-Schnittstelle zu laden.
In meinem Web-Projekt verwende ich Guice in Verbindung mit Jersey und Jackson für das JSON-Objektmapping.
Damit die Webapplikation auch Guice und Jersey anspricht, habe ich in meiner web.xml sowohl den Guice-Filter als auch den Jersey-Servlet reingefügt.

Java:
  // Service.java
  @GET
  @Path("/loadbyid/dto/{personId}")
  @Produces( MediaType.APPLICATION_JSON )
  public PersonDto loadPersonById(@PathParam("personId") Long id) {
  return personDao.loadPersonFromDao(id);
  }
   
  // web.xml
  <web-app>
  <display-name>Archetype Created Web Application</display-name>
   
  <listener>
  <listener-class>guice.GuiceConfig</listener-class>
  </listener>
   
  <filter>
  <filter-name>guiceFilter</filter-name>
  <filter-class>com.google.inject.servlet.GuiceFilter</filter-class>
  </filter>
  <filter-mapping>
  <filter-name>guiceFilter</filter-name>
  <url-pattern>/rest/*</url-pattern>
  </filter-mapping>


  <servlet>
  <servlet-name>jersey-serlvet</servlet-name>
  <servlet-class>
  com.sun.jersey.spi.container.servlet.ServletContainer
  </servlet-class>

  <init-param>
  <param-name>com.sun.jersey.config.property.packages</param-name>
  <param-value>services</param-value>
  </init-param>

  <init-param>
  <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
  <param-value>true</param-value>
  </init-param>

  <load-on-startup>1</load-on-startup>
  </servlet>
   
  <servlet-mapping>
  <servlet-name>jersey-serlvet</servlet-name>
  <url-pattern>/rest/*</url-pattern>
  </servlet-mapping>

  </web-app>

Jetzt habe ich allerdings das Problem, dass wenn ich die REST-Schnittstelle aufrufe, mir folgende Exception kommt ...

Code:
javax.ws.rs.WebApplicationException: com.sun.jersey.api.MessageException: A message body writer for Java class dtos.person.PersonDto, and Java type class dtos.person.PersonDto, and MIME media type application/json was not found
  at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:285)
  at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437)
  at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
  at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
  at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
   ...
Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class dtos.person.PersonDto, and Java type class dtos.person.PersonDto, and MIME media type application/json was not found
  ... 31 more

Sobald ich allerdings den Guice-Filter rausnehme und in meiner REST-Methode logischerweise auch alle Abhängigkeiten der injizierten Objekte rausnehme (also wenn ich in "loadPersonById" z.B. nur sage "return new PersonDto();"), dann wird mir der JSON-String ausgegeben und die Exception kommt nicht mehr.

Weiß jemand, wo der Fehler liegt? Hab echt eine ganze Weile schon gesucht
 

Zurück
Oben