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.
Jetzt habe ich allerdings das Problem, dass wenn ich die REST-Schnittstelle aufrufe, mir folgende Exception kommt ...
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
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