2016-07-02 7 views
3

Bitte, ein wenig Geduld mit mir, ich weiß, es gibt schon so viele solche Fragen und ich war nicht in der Lage, mein Problem zu lösen, die so einfach scheinen und bin nicht sicher, was fehlt (Habe stundenlang versucht, das herauszufinden). Ich habe folgende Maven Urform verwendet haben, um das Projekt zu erzeugen:Jersey mit Grizzly: Getting MessageBodyWriter nicht gefunden für media type = application/json

mvn archetype:generate -DarchetypeArtifactId=jersey-quickstart-grizzly2 -DarchetypeGroupId=org.glassfish.jersey.archetype 

In der pom.xml Datei, ich habe die moxy Abhängigkeit zu unterstützen JSON unkommentiert

<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
</dependency> 

Ich habe dann eine Klasse, Person als unten:

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Person { 

    private String firstName; 
    private String lastName; 

    public Person(String firstName, String lastName) { 
     this.firstName = firstName; 
     this.lastName = lastName; 
    } 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 

sieht MyResource.java wie unten:

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 
import javax.ws.rs.Produces; 
import javax.ws.rs.core.MediaType; 

@Path("myresource") 
public class MyResource { 

    @Path("/person") 
    @GET 
    @Produces(MediaType.APPLICATION_JSON) 
    public Person getPerson() { 
     return new Person("FistName","LastName"); 
    } 

} 

Ich beginne dann die Anwendung und Ausgabe folgende Person abzuzurufen:

http://localhost:8080/myapp/myresource/person 

Das Setup so einfach aussieht, aber das ist nicht arbeiten, mit folgenden Ausnahme:

org.glassfish.jersey.message.internal.WriterInterceptorExecutor$TerminalWriterInterceptor aroundWriteTo SEVERE: MessageBodyWriter not found for media type=application/json, type=class jersey.grizzly.Person, genericType=class jersey.grizzly.Person. 

Ich habe nicht in der Lage gewesen, um herauszufinden, was es ist, vermisse ich (und habe viele vorgeschlagene Antworten vergeblich durchgegangen) und könnte einen anderen Satz von Augen/Perspektive verwenden.

+0

Ich weiß, dass ein Default-Konstruktor für den Leser erforderlich ist, aber ich bin über den Schriftsteller nicht sicher. Sie können versuchen, einen Standardkonstruktor in Ihrer Modellklasse hinzuzufügen. –

+0

Danke @peeskillet, das war das Problem. Ich kann nicht glauben, dass ich dadurch in die Falle gegangen bin. –

+0

Angesichts der Antwort war im Kommentar, wie markiere ich dies als beantwortet? @peeskillet willst du stattdessen den Kommentar als Antwort geben, also schließe ich das? (Es sei denn, es gibt einen anderen Weg, um dasselbe zu erreichen, wenn die Antwort im Kommentar steht) –

Antwort

Verwandte Themen