2014-01-10 6 views
5

Ich habe mich entschieden, auf Jersey 2.5 zu verschieben, und ich bin mit bestimmten Problemen in Java Beans Konvertierung zu JSON konfrontiert. Ich habe eine User Bean und von einem Dienst versuche ich, eine Liste von users zurückzugeben.Upgrade von Jersey 1. * nach Jersey 2.5

Mein Service-Code, der die Liste der Benutzer abruft:

@GET 
@Path("getAllUsers") 
@Produces(MediaType.APPLICATION_JSON) 
public List<User> getAllUsers() { 
    //Fetching users list here 
    return users; 
} 

Ich erhalte folgende Ausnahme von Server-Konsole:

[org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<com.example.User>.] with root cause 
org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyWriter not found for media type=application/json, type=class java.util.ArrayList, genericType=java.util.List<com.example.User>. 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor.aroundWriteTo(WriterInterceptorExecutor.java:227) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149) 
    at org.glassfish.jersey.server.internal.JsonWithPaddingInterceptor.aroundWriteTo(JsonWithPaddingInterceptor.java:103) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149) 
    at org.glassfish.jersey.server.internal.MappableExceptionWrapperInterceptor.aroundWriteTo(MappableExceptionWrapperInterceptor.java:88) 
    at org.glassfish.jersey.message.internal.WriterInterceptorExecutor.proceed(WriterInterceptorExecutor.java:149) 
    at org.glassfish.jersey.message.internal.MessageBodyFactory.writeTo(MessageBodyFactory.java:1139) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.writeResponse(ServerRuntime.java:574) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.processResponse(ServerRuntime.java:381) 
    at org.glassfish.jersey.server.ServerRuntime$Responder.process(ServerRuntime.java:371) 
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:262) 

Bin ich alle Abhängigkeiten oder jede 2.5 spezifische Konfiguration fehlt?

+0

Nein. Welchen JSON-Provider verwenden Sie? Laufen Sie auf GF4 oder verwenden Sie einen anderen Container? –

+0

@MichalGajdos Jackson und Tomcat. –

+0

Danke, um das klarzustellen. Sie haben eine Abhängigkeit von 'jersey-media-json-jackson' oder direkt von Jackson 2.x und keinem anderen JSON-Anbieter (d. H.' Jersey-media-moxy'). Habe ich recht? –

Antwort

5

Da Sie mit Jackson 1.9.x zu (un) marshall JSON, stellen Sie sicher, dass Sie jersey-media-json-jackson Modul in Ihrer Abhängigkeitsliste haben und dass Sie JacksonFeature in Ihrer Anwendung sind Registrierung, dh:

public class MyResourceConfig extends ResourceConfig { 

    public MyResourceConfig() { 
     // ... other registrations ... 

     register(JacksonFeature.class); 
    } 
} 

Weitere Informationen zum Registrieren von Anbietern in Jersey 2 finden Sie unter article.

+0

Vielen Dank. Es hat perfekt funktioniert. –