Jersey-Client-message-body-reader für Java-Typ nicht gefunden

Ich bin mit Jersey-1.1 (alt, ich weiß - da bin ich stecken mit Java 1.5). Ich mache eine einfache BEKOMMEN, wo ein Java-Objekt zurückgegeben wird, als die Einheit. Das Java-Objekt wird korrekt gemarshallt (Java, XML), weil ich kann die GET-Anfrage über das Internet und es funktioniert Super. Ich versuche, die Jersey-client, um die GET-Anforderung, und unmarshall es zurück auf das Java-Objekt, und dies ist, wo es fehlschlägt. Sollte nicht Jersey wissen, wie unmarshall die XML-erhält er von der GET-Anforderung zurück in die POJO, da es annotiert werden, richtig? Es funktioniert auf der server-Seite. Hier ist die exception die ich bekomme:

ClientHandlerException: A message body reader for Java type, class my.class.SearchResult, and MIME media type, application/xml was not found.

Hier ist der client-code:

private SearchResult search() {
    WebResource wr = new Client().resource( "http://localhost:8080/MyProject/search" );
    return wr.get( SearchResult.class );
}

Hier ist die JAXB annotierte POJO-ich bin mit auf dem client und server:

@XmlRootElement(name = "searchResults")
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "searchResults", propOrder = {
    "results"
})
public class SearchResult {
    @XmlElement(name = "result")
    private List<Result> results = new ArrayList<Result>();

    public List<Result> getResults() {
        return results;
    }
    ...
}

Hier ist das innere Ergebnis POJO als gut:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "resultType", propOrder = {
    "name",
    "version",
    "type"
})
public class Result {
    private String name;
    private String version;
    private String type;
    ...
}

Hier ist der service selbst:

@Path("/search")
public class SearchRest {
    @GET
    @Produces(MediaType.APPLICATION_XML)
    public SearchResult search() {
        SearchResult result = new SearchResult();
        ....
        return result;
    }
}

Danke!

  • könnten Sie Ihre Result Klasse?
  • Ich bearbeitet die post, mit dem Ergebnis, Klasse
  • Vielleicht haben die Lösung gefunden auf meinem eigenen. Ich denke, putting jaxb-Gläser in meinem classpath gelöst. Ich war nicht immer alle Fehler zu zeigen, Sie waren nicht dort, aber meine Vermutung ist, dass die @XmlRootElement-annotation wurde ignoriert, zur Laufzeit, weil ich hatte keine jaxb-Gläser in meinem classpath. Gedanken dazu auf?
InformationsquelleAutor billsfan80 | 2012-05-16
Schreibe einen Kommentar